diff --git a/Source/Fonts/font8x11c.asm b/Source/Fonts/font8x11c.asm new file mode 100644 index 00000000..be728ee0 --- /dev/null +++ b/Source/Fonts/font8x11c.asm @@ -0,0 +1,85 @@ + .db $1A, $6F, $7E, $C3, $99, $F3, $E7, $FF, $E7, $7E, $00, $1A, $2B, $7F, $E6 + .db $66, $66, $C3, $1A, $4A, $0C, $18, $FC, $30, $FC, $60, $C0, $FA, $4B, $18 + .db $30, $60, $30, $18, $00, $7C, $00, $01, $90, $1B, $00, $F8, $00, $FB, $E9 + .db $3C, $23, $1A, $4A, $10, $38, $7C, $FE, $7C, $38, $10, $FD, $61, $C3, $C6 + .db $CC, $D8, $36, $6E, $D6, $BF, $06, $58, $6B, $C6, $8C, $0F, $B3, $F9, $6F + .db $E1, $33, $66, $34, $EA, $36, $6A, $DF, $82, $01, $04, $D0, $1F, $00, $6C + .db $00, $F6, $11, $0C, $78, $A5, $F9, $0E, $1B, $18, $3C, $18, $18, $D8, $70 + .db $40, $D6, $EB, $7E, $05, $A1, $EC, $7E, $48, $00, $9E, $40, $7C, $F2, $DB + .db $9B, $5F, $F1, $5B, $55, $51, $BB, $36, $54, $DB, $DB, $B8, $48, $18, $59 + .db $0C, $0C, $00, $B9, $01, $44, $CA, $56, $CC, $66, $D8, $FB, $08, $66, $66 + .db $CC, $27, $57, $47, $DA, $4B, $18, $BC, $1B, $5A, $C6, $7C, $7E, $C0, $CE + .db $C6, $7E, $00, $5A, $2F, $00, $76, $CC, $7C, $0C, $02, $40, $AD, $10, $78 + .db $30, $4C, $78, $8A, $0E, $70, $A4, $3B, $78, $C4, $70, $38, $8C, $78, $0C + .db $AB, $10, $7C, $C0, $0B, $F8, $AF, $06, $42, $C9, $E9, $78, $20, $D5, $02 + .db $FA, $0A, $6C, $6C, $28, $04, $29, $FE, $F2, $6B, $6C, $B6, $FB, $7C, $D0 + .db $7C, $16, $7C, $E8, $00, $60, $87, $52, $66, $C6, $6B, $FB, $43, $38, $6C + .db $38, $76, $DC, $CC, $76, $44, $32, $65, $69, $69, $60, $67, $65, $69, $01 + .db $4C, $60, $B2, $50, $38, $FE, $D0, $45, $91, $F1, $30, $FC, $03, $F4, $47 + .db $C4, $4F, $FC, $6C, $45, $03, $51, $06, $0C, $B1, $53, $C0, $80, $46, $18 + .db $0E, $C6, $C6, $D6, $2B, $7C, $22, $42, $25, $53, $30, $FC, $24, $1F, $CC + .db $0C, $38, $60, $CC, $A0, $53, $0C, $CC, $03, $5B, $45, $1C, $3C, $6C, $CC + .db $FE, $0C, $1E, $AB, $48, $C0, $11, $25, $30, $38, $60, $AA, $0C, $CC, $51 + .db $FC, $CC, $A7, $44, $7B, $08, $78, $6E, $02, $05, $A4, $28, $7C, $4D, $70 + .db $80, $22, $EA, $07, $27, $4C, $60, $24, $E9, $C0, $45, $51, $46, $4F, $21 + .db $42, $59, $45, $71, $6D, $18, $B6, $7C, $4E, $7C, $C6, $DE, $DE, $DC, $C0 + .db $78, $D7, $40, $44, $E8, $FE, $62, $1B, $E8, $FC, $08, $7C, $43, $45, $FA + .db $46, $3C, $66, $C0, $C0, $C0, $66, $3C, $30, $F8, $6C, $93, $66, $6C, $F4 + .db $40, $1F, $FE, $62, $68, $78, $68, $62, $FE, $A0, $55, $60, $F0, $D4, $60 + .db $11, $F3, $66, $3E, $42, $B4, $43, $B3, $62, $13, $66, $11, $10, $1E, $0C + .db $F4, $45, $24, $FA, $E6, $66, $6C, $78, $6C, $66, $E6, $69, $F0, $75, $53 + .db $62, $66, $B3, $79, $1A, $C6, $EE, $FE, $FE, $C0, $03, $F8, $15, $E6, $F6 + .db $DE, $CE, $65, $AB, $E9, $C6, $46, $66, $49, $60, $92, $26, $FD, $02, $CE + .db $7C, $0E, $45, $B3, $7D, $78, $CC, $E0, $78, $1C, $C1, $4F, $B4, $87, $0A + .db $4D, $C6, $BE, $06, $F5, $6C, $38, $FC, $1F, $D6, $D6, $FE, $6C, $4A, $6C + .db $00, $62, $95, $E9, $CC, $85, $61, $FB, $4F, $FE, $CC, $98, $30, $62, $C6 + .db $FE, $0A, $60, $23, $55, $6A, $C0, $B5, $33, $06, $02, $0A, $18, $F5, $23 + .db $69, $10, $C0, $A7, $F5, $6C, $6A, $FE, $6A, $66, $78, $43, $D2, $94, $0C + .db $7C, $F5, $77, $48, $E0, $3D, $61, $A0, $2D, $DC, $95, $CC, $C0, $F0, $F0 + .db $29, $0C, $36, $CC, $76, $5F, $6E, $FC, $69, $53, $60, $F0, $0E, $62, $04 + .db $EA, $76, $4B, $F8, $BE, $F0, $6C, $76, $6B, $E6, $07, $A7, $BC, $1F, $48 + .db $0C, $BC, $66, $9F, $F2, $E0, $60, $43, $DF, $6D, $70, $7F, $03, $F8, $0A + .db $EC, $FE, $D6, $04, $11, $DC, $66, $F5, $46, $7C, $E9, $CC, $26, $4A, $7C + .db $91, $46, $92, $2C, $1E, $5F, $4C, $76, $7C, $A6, $63, $43, $0E, $A2, $FF + .db $DE, $B6, $36, $1C, $04, $47, $45, $0A, $63, $A0, $04, $63, $A0, $24, $5F + .db $63, $9F, $45, $D4, $45, $3A, $62, $46, $60, $9F, $53, $64, $FC, $03, $A0 + .db $90, $E8, $E0, $43, $B3, $0D, $18, $FA, $01, $01, $63, $02, $43, $05, $63 + .db $D1, $86, $E0, $A1, $10, $3C, $3C, $64, $74, $5A, $2A, $1C, $36, $63, $7F + .db $63, $9F, $F1, $03, $06, $53, $FE, $C6, $66, $48, $28, $5A, $05, $F7, $76 + .db $DC, $0B, $56, $6C, $00, $DF, $01, $07, $A0, $9E, $4F, $3F, $6D, $CC, $FF + .db $CC, $CD, $CF, $14, $BB, $1E, $66, $3C, $06, $3C, $54, $BC, $2E, $FE, $62 + .db $78, $62, $FE, $33, $07, $A0, $F3, $10, $28, $44, $B3, $04, $AF, $43, $D4 + .db $8E, $00, $CF, $0F, $18, $A1, $F7, $20, $50, $0E, $8C, $CC, $0F, $A5, $FF + .db $BC, $E9, $F6, $45, $66, $82, $1D, $45, $BE, $8D, $7C, $EA, $CA, $14, $0C + .db $18, $46, $3A, $F5, $C6, $7C, $06, $A0, $29, $6C, $23, $59, $03, $86, $E4 + .db $52, $5D, $3D, $67, $6E, $7E, $76, $E6, $BC, $B3, $EF, $C6, $11, $EF, $C6 + .db $4F, $C6, $BE, $0F, $EE, $C6, $92, $18, $30, $13, $AC, $78, $FF, $7A, $6A + .db $7C, $07, $85, $F2, $FA, $1F, $D8, $CC, $C6, $CC, $35, $AA, $55, $82, $FE + .db $98, $AA, $30, $7D, $AC, $00, $E0, $95, $F8, $D6, $D0, $D6, $83, $FE, $61 + .db $E8, $64, $84, $D5, $FA, $4D, $1E, $31, $FC, $60, $F8, $33, $1E, $41, $AA + .db $A1, $FE, $43, $D4, $E8, $28, $86, $F5, $CF, $70, $3E, $61, $9E, $60, $A0 + .db $37, $86, $7C, $55, $1A, $3C, $42, $99, $A1, $A1, $99, $42, $3C, $A2, $9C + .db $6C, $6C, $3E, $00, $7E, $DD, $98, $E8, $33, $F6, $66, $33, $95, $FC, $0C + .db $6D, $4A, $66, $BE, $4C, $66, $C9, $FB, $1F, $B9, $A5, $B9, $A5, $65, $F3 + .db $64, $27, $85, $85, $A6, $E5, $3F, $2C, $FC, $75, $18, $30, $CE, $80, $DF + .db $A7, $EE, $38, $94, $50, $20, $82, $03, $FD, $E9, $66, $B1, $7B, $C0, $F8 + .db $E8, $7F, $10, $7B, $1B, $F0, $47, $BB, $47, $D4, $82, $5F, $18, $38, $18 + .db $18, $3C, $92, $1D, $46, $82, $41, $52, $A5, $F6, $FC, $42, $7F, $CD, $CC + .db $CF, $CC, $CD, $7F, $9C, $7E, $DB, $DE, $D8, $7E, $FF, $FB, $65, $95, $63 + .db $B6, $AD, $60, $0C, $82, $FF, $2C, $ED, $FF, $06, $24, $5A, $0F, $1F, $11 + .db $EC, $F8, $02, $EA, $1F, $04, $A1, $EF, $F8, $43, $D4, $25, $51, $47, $C9 + .db $EF, $FF, $12, $47, $9D, $25, $5F, $35, $88, $22, $43, $80, $26, $F9, $07 + .db $62, $27, $CC, $2D, $FF, $0E, $36, $F5, $23, $1E, $0A, $3F, $30, $37, $FB + .db $0D, $FE, $06, $F6, $01, $5E, $00, $37, $30, $3F, $D4, $1E, $F6, $06, $FE + .db $A5, $4B, $37, $D4, $24, $43, $D4, $45, $A8, $2E, $F7, $51, $4F, $F7, $9D + .db $2D, $F7, $5F, $0E, $FF, $81, $C2, $26, $EF, $3C, $E8, $18, $E8, $3C, $A4 + .db $CA, $96, $E9, $7F, $04, $FC, $0E, $0C, $FE, $0C, $B7, $60, $30, $8B, $0A + .db $0F, $18, $10, $F7, $10, $28, $F7, $76, $DC, $0C, $F3, $6C, $00, $85, $CB + .db $22, $51, $65, $3D, $BF, $1B, $7E, $D8, $6E, $E1, $55, $54, $0C, $78, $A8 + .db $A6, $EA, $5F, $0C, $18, $45, $A8, $26, $5E, $F3, $6C, $00, $85, $E0, $EF + .db $70, $11, $EF, $70, $06, $AB, $28, $D8, $A6, $D1, $DE, $FD, $34, $18, $2C + .db $7C, $B3, $76, $DC, $EE, $5E, $87, $E0, $F5, $15, $44, $39, $26, $82, $FC + .db $01, $86, $E1, $9E, $2E, $3D, $66, $6E, $76, $66, $E0, $A6, $EA, $54, $0C + .db $18, $45, $71, $06, $AB, $2A, $CC, $66, $CC, $8F, $CC, $D1, $8E, $8B, $7C + .db $D5, $E6, $44, $DF, $26, $47, $00, $F0, $E8 + diff --git a/Source/Fonts/font8x11c.bin b/Source/Fonts/font8x11c.bin new file mode 100644 index 00000000..e065e9a3 Binary files /dev/null and b/Source/Fonts/font8x11c.bin differ diff --git a/Source/HBIOS/font8x11.asm b/Source/Fonts/font8x11u.asm similarity index 100% rename from Source/HBIOS/font8x11.asm rename to Source/Fonts/font8x11u.asm diff --git a/Source/Fonts/font8x11u.bin b/Source/Fonts/font8x11u.bin new file mode 100644 index 00000000..330a44e0 Binary files /dev/null and b/Source/Fonts/font8x11u.bin differ diff --git a/Source/Fonts/font8x16c.asm b/Source/Fonts/font8x16c.asm new file mode 100644 index 00000000..f2112d23 --- /dev/null +++ b/Source/Fonts/font8x16c.asm @@ -0,0 +1,99 @@ + .db $0F, $00, $F8, $38, $4E, $7E, $81, $A5, $81, $81, $BD, $99, $2C, $7E, $87 + .db $FC, $7C, $FE, $FE, $D6, $FE, $FE, $BA, $C6, $FE, $7C, $F8, $19, $00, $6C + .db $EE, $FE, $20, $35, $38, $10, $80, $3D, $10, $38, $7C, $98, $26, $00, $2C + .db $40, $DC, $08, $6C, $07, $00, $49, $7C, $CF, $22, $8F, $06, $F0, $18, $3C + .db $0C, $18, $AF, $0A, $FF, $F0, $E7, $C3, $F3, $E7, $FF, $04, $0F, $08, $66 + .db $45, $DF, $04, $0F, $08, $99, $35, $C3, $E7, $03, $19, $1E, $0E, $1E, $36 + .db $78, $CC, $FF, $4C, $78, $44, $44, $D3, $10, $7E, $18, $EB, $00, $F9, $10 + .db $1E, $1A, $1E, $18, $3C, $78, $F8, $70, $0F, $30, $3E, $36, $5C, $41, $36 + .db $76, $F6, $66, $0E, $1E, $0C, $83, $51, $DB, $7E, $A0, $5D, $3C, $7E, $DB + .db $18, $30, $FD, $66, $80, $E0, $F0, $FC, $FE, $FC, $F0, $E0, $80, $5E, $02 + .db $0E, $3E, $7E, $FE, $7E, $3E, $0E, $02, $53, $4A, $7E, $B0, $4E, $7E, $4E + .db $0C, $66, $FC, $21, $24, $8F, $11, $7F, $DB, $F1, $7B, $1B, $65, $D0, $38 + .db $5C, $C6, $C6, $60, $7C, $F6, $DE, $7C, $0C, $6F, $7C, $AA, $13, $62, $CD + .db $47, $B0, $49, $7E, $4D, $47, $A0, $40, $47, $40, $01, $9F, $46, $90, $06 + .db $FF, $31, $0C, $0E, $FF, $0E, $0C, $00, $FF, $32, $30, $70, $FE, $70, $30 + .db $00, $E8, $C0, $2F, $FE, $02, $7F, $23, $24, $66, $FF, $66, $24, $70, $63 + .db $7D, $47, $75, $1F, $08, $7C, $61, $5C, $67, $05, $54, $67, $63, $69, $3C + .db $B3, $65, $B0, $09, $36, $F0, $2F, $14, $3F, $08, $6C, $0B, $FE, $E7, $4E + .db $6C, $50, $FD, $7C, $C6, $C0, $78, $3C, $06, $C6, $7C, $18, $18, $FC, $43 + .db $62, $66, $0C, $18, $30, $66, $C6, $79, $38, $6C, $38, $30, $76, $7E, $50 + .db $4C, $76, $34, $28, $0C, $24, $47, $8F, $41, $D5, $03, $FB, $4D, $18, $1E + .db $01, $02, $F4, $01, $47, $8D, $13, $50, $38, $FE, $BA, $47, $5D, $62, $11 + .db $27, $81, $47, $A8, $AA, $4F, $FE, $28, $07, $00, $51, $02, $06, $61, $7F + .db $00, $60, $C0, $80, $50, $7F, $10, $CE, $DE, $F6, $E6, $52, $76, $18, $78 + .db $7E, $27, $00, $43, $D0, $F6, $C6, $FE, $FE, $37, $06, $06, $3C, $06, $06 + .db $06, $7D, $0C, $1C, $3C, $6C, $CC, $CC, $FE, $0C, $0C, $1E, $16, $61, $73 + .db $2B, $FC, $08, $46, $A0, $21, $08, $C6, $F8, $26, $4B, $FE, $B1, $02, $F0 + .db $25, $02, $20, $27, $2A, $23, $4D, $7E, $A0, $46, $24, $23, $E8, $27, $63 + .db $66, $B8, $43, $33, $6C, $60, $C0, $46, $01, $67, $FF, $02, $20, $43, $0E + .db $47, $30, $00, $9F, $65, $20, $46, $90, $08, $DE, $7E, $0F, $DC, $C0, $7E + .db $50, $41, $6F, $EA, $FE, $84, $10, $E9, $FC, $8A, $7C, $FF, $0B, $AE, $FC + .db $90, $11, $C2, $C0, $F0, $3C, $C2, $66, $3C, $0F, $B4, $F8, $6C, $EE, $75 + .db $6C, $F8, $85, $3F, $68, $66, $60, $64, $7C, $64, $60, $60, $66, $FE, $50 + .db $57, $60, $F0, $90, $61, $DE, $6F, $CE, $F0, $0F, $4D, $C6, $91, $46, $90 + .db $15, $3C, $18, $2F, $3C, $84, $5E, $03, $D8, $D8, $70, $D0, $FE, $CC, $D8 + .db $F0, $F0, $D8, $CC, $13, $F0, $60, $F0, $48, $62, $90, $26, $FE, $3F, $EE + .db $EE, $FE, $D6, $D6, $D6, $A0, $71, $F0, $E6, $E6, $49, $CE, $8F, $67, $A0 + .db $20, $65, $90, $46, $20, $52, $66, $7C, $60, $27, $41, $40, $BE, $57, $7C + .db $06, $00, $49, $78, $1B, $6F, $E6, $30, $11, $77, $70, $1C, $20, $57, $7E + .db $5A, $50, $55, $4F, $C6, $A0, $26, $8E, $AE, $6C, $D0, $43, $A4, $5E, $02 + .db $D6, $FE, $EE, $60, $23, $63, $8B, $87, $E2, $A0, $4A, $3C, $00, $86, $FF + .db $D0, $E9, $86, $97, $60, $C2, $80, $0F, $0D, $60, $6E, $7C, $1D, $F3, $80 + .db $C0, $2D, $02, $0F, $0D, $0C, $24, $0F, $69, $10, $30, $0F, $00, $EE, $8C + .db $FF, $91, $2F, $0C, $47, $48, $78, $C4, $A0, $F1, $50, $EC, $DC, $51, $00 + .db $E0, $96, $6E, $66, $00, $67, $FD, $4E, $C0, $20, $51, $1C, $0C, $D2, $02 + .db $F0, $2F, $7E, $21, $F7, $C6, $FE, $A8, $36, $F0, $20, $E9, $FC, $37, $30 + .db $78, $04, $69, $76, $02, $71, $CE, $76, $BE, $47, $A0, $AF, $E6, $F0, $58 + .db $6D, $38, $00, $86, $FE, $03, $4B, $1C, $30, $A1, $0E, $45, $70, $60, $6F + .db $E9, $6C, $46, $D0, $06, $FE, $8F, $1C, $5D, $1E, $61, $00, $EB, $C6, $A4 + .db $4D, $EC, $DC, $47, $60, $10, $66, $00, $26, $85, $F0, $FD, $4E, $F0, $60 + .db $42, $30, $61, $B8, $2F, $1E, $02, $20, $25, $11, $46, $00, $F6, $7C, $06 + .db $4D, $30, $21, $4F, $36, $80, $6B, $CC, $F0, $EF, $76, $08, $66, $00, $26 + .db $84, $F0, $FE, $2F, $6C, $2F, $AA, $6C, $8A, $27, $02, $65, $E0, $86, $EF + .db $32, $82, $FE, $54, $62, $FE, $10, $E9, $0E, $EA, $70, $4F, $0E, $00, $10 + .db $64, $FB, $24, $E9, $70, $EA, $0E, $6C, $70, $09, $F6, $76, $DC, $A7, $D3 + .db $5E, $A1, $EF, $3B, $65, $33, $F2, $3C, $66, $81, $8E, $60, $9F, $4B, $38 + .db $53, $01, $EE, $44, $7F, $A6, $61, $67, $30, $4F, $60, $39, $8F, $CC, $E0 + .db $58, $00, $26, $8E, $86, $92, $26, $8E, $A6, $01, $26, $0F, $87, $C1, $3D + .db $81, $D2, $28, $0C, $38, $44, $B0, $46, $A0, $46, $B0, $26, $86, $D0, $F1 + .db $27, $5F, $E8, $66, $86, $E0, $85, $C8, $D3, $26, $46, $D0, $27, $04, $8F + .db $C6, $E1, $2F, $45, $71, $01, $78, $24, $46, $21, $A8, $FE, $F4, $B0, $E9 + .db $7C, $6E, $FE, $40, $FD, $66, $DB, $1B, $7F, $D8, $D8, $DF, $11, $7E, $D8 + .db $FD, $09, $FE, $4E, $DE, $00, $87, $F5, $C0, $36, $C6, $00, $88, $46, $50 + .db $26, $46, $D0, $66, $B0, $66, $E0, $27, $84, $8A, $18, $E4, $0F, $47, $50 + .db $8E, $7C, $E8, $60, $25, $EE, $C6, $66, $10, $65, $C0, $6D, $18, $A0, $40 + .db $42, $E9, $F0, $7C, $0C, $66, $F6, $6C, $E1, $A5, $F1, $AE, $3C, $C8, $F0 + .db $F8, $3E, $63, $63, $30, $1C, $06, $63, $63, $3E, $00, $1C, $06, $68, $32 + .db $38, $0E, $66, $20, $66, $60, $25, $88, $66, $A0, $26, $47, $20, $4D, $81 + .db $B8, $84, $FF, $20, $ED, $DC, $B6, $76, $DC, $A0, $06, $8E, $B2, $C6, $C6 + .db $8F, $A5, $E2, $60, $F8, $21, $1E, $00, $1E, $33, $FB, $1D, $67, $63, $33 + .db $1D, $48, $42, $A9, $49, $3B, $D3, $96, $3E, $06, $C0, $B2, $30, $30, $FB + .db $BD, $6E, $60, $B0, $65, $8B, $41, $2E, $87, $6B, $4D, $A1, $8F, $04, $AE + .db $A2, $16, $49, $6C, $7B, $50, $DC, $36, $66, $2F, $3E, $80, $5C, $2F, $36 + .db $6E, $DE, $36, $7E, $DD, $A3, $F2, $8E, $3C, $BC, $9E, $84, $3C, $FF, $12 + .db $6C, $D8, $6C, $36, $21, $9F, $F4, $6C, $D8, $37, $11, $44, $55, $F7, $AA + .db $55, $F7, $DD, $77, $5F, $0F, $18, $D9, $2F, $F8, $58, $27, $1F, $0C, $36 + .db $F5, $F6, $36, $86, $C8, $60, $27, $47, $47, $D0, $F0, $F6, $06, $07, $FE + .db $44, $C2, $27, $06, $B7, $F6, $06, $C0, $23, $25, $68, $27, $0B, $46, $70 + .db $A7, $1B, $66, $4F, $F8, $38, $2E, $1F, $38, $25, $4F, $FF, $D0, $67, $EF + .db $FF, $06, $B0, $26, $47, $C0, $76, $47, $D2, $6F, $1F, $F0, $69, $EC, $37 + .db $26, $57, $30, $3F, $62, $40, $37, $3F, $30, $50, $4E, $F7, $A0, $47, $92 + .db $4F, $F7, $C0, $51, $47, $D0, $25, $04, $6F, $FF, $F0, $4F, $F7, $D0, $16 + .db $45, $22, $6F, $FF, $D0, $47, $A0, $77, $4F, $FF, $20, $67, $70, $60, $47 + .db $50, $46, $20, $67, $A1, $48, $6F, $1F, $E0, $6F, $3F, $30, $66, $EE, $FF + .db $65, $D2, $67, $A0, $67, $50, $8F, $EE, $1F, $0F, $FF, $64, $46, $4D, $26 + .db $0F, $F0, $F6, $EF, $0F, $65, $47, $C8, $86, $DE, $DE, $82, $1D, $A6, $EA + .db $30, $A1, $A4, $8B, $D8, $BC, $50, $ED, $CC, $95, $66, $62, $8E, $87, $A1 + .db $33, $0B, $6C, $FC, $86, $60, $FB, $3E, $62, $30, $18, $18, $30, $62, $A6 + .db $CD, $49, $CC, $BB, $AE, $70, $D1, $A1, $EC, $66, $57, $C0, $80, $8F, $67 + .db $E4, $2C, $89, $FE, $03, $A3, $CE, $FD, $45, $C0, $A4, $61, $22, $78, $07 + .db $19, $21, $00, $FE, $8D, $EE, $30, $40, $77, $52, $3C, $66, $61, $4F, $78 + .db $90, $1A, $A1, $7D, $AF, $7E, $B1, $22, $A9, $7C, $B7, $30, $49, $F6, $90 + .db $25, $B3, $1C, $30, $EC, $20, $B7, $30, $1C, $00, $60, $4F, $C6, $31, $04 + .db $EA, $87, $A1, $7B, $EC, $7E, $A5, $C2, $23, $8B, $A6, $91, $21, $60, $23 + .db $25, $7E, $97, $1E, $1A, $ED, $A0, $9F, $58, $78, $30, $A1, $86, $09, $7E + .db $D4, $67, $8E, $02, $E0, $67, $90, $8F, $78, $AA, $53, $07, $77, $87, $F6 + .db $F5, $60, $50, $34, $78, $38, $61, $6F, $D8, $74, $43, $5F, $F1, $70, $D8 + .db $AF, $F8, $95, $2D, $03, $FB, $EF, $00, $47, $00, $F0, $E8 + diff --git a/Source/Fonts/font8x16c.bin b/Source/Fonts/font8x16c.bin new file mode 100644 index 00000000..2373e55e Binary files /dev/null and b/Source/Fonts/font8x16c.bin differ diff --git a/Source/HBIOS/font8x16.asm b/Source/Fonts/font8x16u.asm similarity index 100% rename from Source/HBIOS/font8x16.asm rename to Source/Fonts/font8x16u.asm diff --git a/Source/Fonts/font8x16u.bin b/Source/Fonts/font8x16u.bin new file mode 100644 index 00000000..c7ed1f51 Binary files /dev/null and b/Source/Fonts/font8x16u.bin differ diff --git a/Source/Fonts/font8x8c.asm b/Source/Fonts/font8x8c.asm new file mode 100644 index 00000000..b53b332d --- /dev/null +++ b/Source/Fonts/font8x8c.asm @@ -0,0 +1,69 @@ + .db $0F, $00, $F1, $F8, $0C, $3C, $3C, $30, $21, $F0, $F0, $F0, $22, $F8, $20 + .db $01, $5C, $21, $F2, $F0, $F0, $05, $F2, $41, $D2, $F2, $FF, $FF, $F8, $20 + .db $70, $F8, $70, $20, $1F, $5F, $F8, $D8, $88, $00, $88, $D8, $F8, $00, $73 + .db $59, $18, $18, $20, $60, $90, $60, $D9, $59, $00, $50, $20, $20, $D8, $27 + .db $81, $18, $A8, $50, $50, $D8, $E2, $4A, $A8, $A8, $F1, $FC, $FC, $38, $10 + .db $30, $70, $F0, $70, $DF, $49, $00, $D3, $43, $CF, $09, $50, $00, $D4, $40 + .db $D8, $FC, $78, $A8, $A8, $68, $28, $28, $00, $44, $53, $20, $CF, $44, $60 + .db $43, $58, $41, $D0, $03, $43, $50, $42, $60, $FA, $20, $10, $18, $FC, $18 + .db $10, $F8, $60, $FC, $60, $07, $FF, $11, $18, $1D, $30, $78, $78, $30, $20 + .db $80, $FB, $D8, $D8, $50, $1B, $0E, $48, $48, $FC, $59, $32, $20, $78, $A0 + .db $78, $24, $F8, $17, $59, $C8, $D0, $20, $58, $98, $D8, $00, $6F, $48, $50 + .db $27, $69, $78, $E8, $6B, $40, $C5, $4B, $10, $81, $41, $48, $0A, $10, $28 + .db $20, $C0, $69, $A8, $E8, $51, $A8, $20, $80, $FD, $20, $F8, $20, $45, $D3 + .db $4F, $70, $93, $05, $61, $99, $50, $04, $08, $C6, $11, $40, $80, $10, $98 + .db $A8, $F8, $51, $C8, $70, $51, $42, $B7, $28, $F8, $08, $88, $3C, $33, $60 + .db $80, $59, $62, $70, $08, $88, $70, $00, $30, $50, $90, $F8, $A5, $3A, $00 + .db $F8, $80, $80, $F0, $8C, $30, $38, $40, $E9, $88, $53, $F8, $08, $86, $41 + .db $D0, $0A, $88, $EC, $22, $29, $78, $0E, $42, $A4, $02, $25, $CA, $52, $60 + .db $00, $9A, $72, $40, $20, $EF, $72, $FC, $00, $C0, $21, $42, $86, $42, $98 + .db $49, $30, $52, $21, $C0, $50, $B8, $B0, $A5, $69, $70, $58, $18, $88, $F8 + .db $88, $F0, $50, $00, $F0, $07, $E8, $70, $29, $F0, $08, $80, $48, $32, $88 + .db $70, $EA, $48, $E8, $F8, $E8, $E0, $2A, $F8, $C3, $29, $F0, $22, $0E, $4A + .db $B8, $88, $20, $44, $C8, $54, $F8, $20, $40, $11, $1C, $08, $F4, $22, $F8 + .db $2F, $90, $A0, $C0, $A0, $90, $09, $80, $42, $C8, $5A, $18, $88, $D8, $A8 + .db $88, $A0, $51, $88, $C8, $10, $52, $98, $88, $48, $EA, $88, $41, $33, $42 + .db $B0, $23, $20, $48, $32, $78, $04, $32, $A0, $90, $0F, $41, $56, $42, $18 + .db $F3, $20, $20, $42, $D1, $45, $90, $81, $E5, $23, $8C, $41, $B7, $29, $50 + .db $00, $9C, $E8, $50, $23, $01, $FF, $41, $58, $61, $A8, $41, $90, $12, $78 + .db $40, $48, $78, $0E, $EA, $80, $81, $FF, $B8, $0A, $08, $4A, $78, $18, $66 + .db $0A, $63, $EC, $3D, $08, $60, $60, $10, $28, $F0, $10, $52, $88, $70, $50 + .db $42, $6D, $02, $6A, $70, $E8, $42, $CB, $61, $A5, $02, $88, $30, $88, $F8 + .db $82, $F2, $FF, $49, $E0, $A5, $41, $CF, $FA, $38, $48, $48, $38, $08, $F0 + .db $B0, $C8, $41, $B4, $E8, $20, $29, $20, $01, $40, $94, $68, $18, $FF, $FB + .db $48, $30, $80, $80, $20, $5F, $04, $42, $90, $48, $50, $07, $43, $84, $45 + .db $D0, $63, $45, $02, $C0, $61, $8E, $41, $AF, $4B, $60, $B0, $2B, $08, $F1 + .db $80, $80, $50, $60, $80, $65, $6A, $60, $4E, $41, $90, $43, $C0, $08, $90 + .db $FC, $29, $68, $43, $0D, $23, $CF, $41, $00, $82, $A1, $E8, $48, $E9, $48 + .db $21, $5F, $4A, $40, $C8, $69, $F8, $FF, $8A, $F8, $68, $EB, $40, $00, $FE + .db $23, $01, $96, $02, $50, $00, $6C, $6D, $03, $F5, $F2, $70, $50, $F8, $70 + .db $00, $FC, $80, $BC, $A0, $AC, $A8, $8D, $FC, $F3, $E0, $1F, $FC, $04, $F4 + .db $14, $D4, $54, $F4, $1A, $12, $D4, $14, $F4, $04, $2A, $FF, $F3, $41, $D5 + .db $1F, $AC, $A0, $BC, $80, $FC, $A8, $F0, $4B, $AC, $C0, $41, $D9, $43, $C8 + .db $4E, $00, $B8, $0C, $80, $FF, $6E, $FC, $96, $0F, $04, $C0, $06, $46, $D1 + .db $23, $CA, $27, $3F, $41, $DC, $43, $C5, $63, $53, $07, $FC, $3B, $74, $20 + .db $40, $08, $6A, $10, $41, $6A, $20, $C8, $63, $68, $22, $E8, $88, $E9, $74 + .db $63, $50, $22, $0F, $8D, $C8, $48, $48, $7C, $76, $64, $43, $22, $CA, $62 + .db $A2, $09, $40, $46, $3B, $46, $14, $70, $88, $90, $ED, $30, $88, $1C, $AC + .db $21, $71, $58, $B8, $2A, $8C, $30, $E6, $9E, $19, $00, $14, $28, $50, $A0 + .db $50, $28, $14, $00, $DA, $02, $3C, $0F, $00, $54, $AA, $0D, $AA, $B0, $1B + .db $B6, $6C, $DA, $EF, $0F, $18, $2C, $0D, $F8, $02, $BF, $09, $6C, $29, $EC + .db $EC, $63, $CB, $24, $08, $FC, $75, $23, $0A, $0C, $CE, $06, $01, $44, $F0 + .db $0E, $EE, $23, $62, $C7, $74, $64, $64, $C1, $A1, $EE, $31, $01, $44, $04 + .db $A5, $E0, $18, $ED, $30, $6F, $30, $54, $26, $4E, $21, $23, $80, $26, $24 + .db $54, $23, $1D, $1F, $D8, $D8, $DC, $D8, $54, $DC, $C0, $A5, $3D, $08, $FC + .db $C0, $DC, $66, $55, $21, $C0, $22, $22, $4E, $85, $7F, $23, $80, $E9, $00 + .db $42, $91, $25, $A6, $EA, $29, $43, $87, $04, $00, $54, $26, $44, $79, $EA + .db $3C, $3F, $00, $3E, $30, $3E, $3D, $44, $7E, $44, $B9, $84, $F0, $86, $DF + .db $38, $43, $54, $05, $21, $8D, $21, $0F, $C0, $F0, $EF, $0C, $20, $04, $B1 + .db $00, $68, $FE, $A8, $82, $70, $E8, $B0, $FA, $3D, $F0, $40, $F0, $90, $80 + .db $80, $8A, $F8, $7F, $91, $48, $00, $EF, $B0, $EA, $40, $A2, $50, $EC, $7C + .db $8A, $00, $E2, $48, $61, $18, $58, $74, $98, $10, $10, $1C, $55, $F8, $2C + .db $10, $38, $44, $38, $10, $58, $30, $CC, $CC, $FC, $CC, $CC, $38, $00, $78 + .db $84, $84, $84, $48, $48, $84, $7B, $28, $40, $43, $28, $44, $61, $5A, $F9 + .db $0E, $6C, $92, $92, $82, $CF, $B3, $58, $68, $E2, $40, $30, $F8, $80, $42 + .db $26, $09, $CC, $FE, $41, $0A, $04, $40, $B4, $A9, $7C, $EE, $1A, $B3, $FE + .db $00, $61, $21, $CF, $A9, $10, $41, $22, $8E, $73, $18, $34, $5B, $65, $6E + .db $F1, $B0, $70, $AB, $FC, $1F, $12, $64, $98, $EB, $54, $00, $38, $9B, $01 + .db $4D, $38, $01, $24, $CE, $89, $0E, $7B, $9B, $0E, $28, $18, $08, $90, $A1 + .db $E0, $3D, $62, $12, $49, $3C, $85, $6F, $00, $E8, $05, $FF, $47, $00, $E8 diff --git a/Source/Fonts/font8x8c.bin b/Source/Fonts/font8x8c.bin new file mode 100644 index 00000000..16c0781b Binary files /dev/null and b/Source/Fonts/font8x8c.bin differ diff --git a/Source/HBIOS/font_8x8.asm b/Source/Fonts/font8x8u.asm similarity index 100% rename from Source/HBIOS/font_8x8.asm rename to Source/Fonts/font8x8u.asm diff --git a/Source/Fonts/font8x8u.bin b/Source/Fonts/font8x8u.bin new file mode 100644 index 00000000..17f16d25 Binary files /dev/null and b/Source/Fonts/font8x8u.bin differ diff --git a/Source/HBIOS/font_lo.asm b/Source/Fonts/font_lo.asm similarity index 100% rename from Source/HBIOS/font_lo.asm rename to Source/Fonts/font_lo.asm diff --git a/Source/Fonts/fonts.txt b/Source/Fonts/fonts.txt new file mode 100644 index 00000000..fc697665 --- /dev/null +++ b/Source/Fonts/fonts.txt @@ -0,0 +1,51 @@ +Font files for ROMWBW. + +Compressed fonts can be created using lzsa utility. + +Compress using the command line compressor by Emmanuel Marty +The compression is done as follows: + +lzsa.exe -f2 -r + +where option -f2 selects lzsa version 2 compression. +where option -r asks for the generation of raw (frame-less) data. + +Use of compressed fonts in ROMWBW HBIOS is done through the use of the USEZLSA2 equate. + +Use the following in you customer configuration to turn on font compression: + +USEZLSA2 .SET TRUE + +Original and compresses fonts in this directory: + + 6,692 font8x11c.asm ; 8x11 compressed font in assembly format + 1,254 font8x11c.bin ; 8x11 compressed font in binary format +15,731 font8x11u.asm ; 8x11 uncompressed font in assembly format + 2,816 font8x11u.bin ; 8x11 uncompressed font in binary format + + 7,827 font8x16c.asm ; 8x16 compressed font in assembly format + 1,467 font8x16c.bin ; 8x16 compressed font in binary format +17,920 font8x16u.asm ; 8x16 uncompressed font in assembly format + 4,096 font8x16u.bin ; 8x16 uncompressed font in binary format + + 5,520 font8x8c.asm ; 8x8 compressed font in assembly format + 1,035 font8x8c.bin ; 8x8 compressed font in binary format +14,742 font8x8u.asm ; 8x8 uncompressed font in assembly format + 2,048 font8x8u.bin ; 8x8 uncompressed font in binary format + +HxD hex editor was used to export the compressed bin files to a Pascal .pas file and then Notepad++ was used to reformat in asm format. +Notepad++ search/replace and column mode can be very efficient for reformatting. +Various bin2asm utilities are around but I could not find one that worked. + +Original compression source code and files available here: + +Latest github code: + https://github.com/emmanuel-marty/lzsa +Implementation example (older version): + https://cpcrulez.fr/applications_tools_cruncher_LZSA2_Z80.htm +x86 lzsa compressor application: + http://www.pouet.net/prod.php?which=81573 + + + + diff --git a/Source/Fonts/lzsa.exe b/Source/Fonts/lzsa.exe new file mode 100644 index 00000000..74214d13 Binary files /dev/null and b/Source/Fonts/lzsa.exe differ diff --git a/Source/HBIOS/cvdu.asm b/Source/HBIOS/cvdu.asm index d117c412..da4620fd 100644 --- a/Source/HBIOS/cvdu.asm +++ b/Source/HBIOS/cvdu.asm @@ -10,6 +10,7 @@ ; - IMPLEMENT SET CURSOR STYLE (VDASCS) FUNCTION ; - IMPLEMENT ALTERNATE DISPLAY MODES? ; - IMPLEMENT DYNAMIC READ/WRITE OF CHARACTER BITMAP DATA? +; - IMPLEMENT TIMEOUT ON PROBE ; ;====================================================================== ; CVDU DRIVER - CONSTANTS @@ -58,12 +59,12 @@ CVDU_INIT1: ; ADD OURSELVES TO VDA DISPATCH TABLE LD BC,CVDU_FNTBL ; BC := FUNCTION TABLE ADDRESS - LD DE,CVDU_IDAT ; DE := VGA INSTANCE DATA PTR + LD DE,CVDU_IDAT ; DE := CVDU INSTANCE DATA PTR CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED ; INITIALIZE EMULATION LD C,A ; C := ASSIGNED VIDEO DEVICE NUM - LD DE,VGA_FNTBL ; DE := FUNCTION TABLE ADDRESS + LD DE,CVDU_FNTBL ; DE := FUNCTION TABLE ADDRESS LD HL,CVDU_IDAT ; HL := CVDU INSTANCE DATA PTR CALL TERM_ATTACH ; DO IT @@ -271,6 +272,7 @@ CVDU_RDX: ; ON RETURN, ZF SET INDICATES HARDWARE FOUND ; CVDU_PROBE: + CALL SPK_BEEP ; WRITE TEST PATTERN $A5 $5A TO START OF VRAM LD HL,0 ; POINT TO FIRST BYTE OF VRAM LD C,18 ; ADDRESS REGISTER PAIR @@ -281,7 +283,7 @@ CVDU_PROBE: CALL CVDU_WR ; WRITE VALUE TO LOC 0, ADR PTR INCREMENTS CPL ; INVERT TEST VALUE CALL CVDU_WR ; WRITE INVERTED VALUE TO LOC 1 - + CALL SPK_BEEP ; READ TEST PATTERN BACK TO CONFIRM HARDWARE EXISTS LD HL,0 ; POINT TO FIRST BYTE OF VRAM LD C,18 ; ADDRESS REGISTER PAIR @@ -360,7 +362,22 @@ CVDU_LOADFONT: LD C,18 ; UPDATE ADDRESS REGISTER PAIR CALL CVDU_WRX ; DO IT - LD HL,CVDU_FONT ; POINTER TO FONT DATA +#IF USEZLSA2 + LD (CVDU_STACK),SP ; SAVE STACK + LD HL,(CVDU_STACK) ; AND SHIFT IT + LD DE,$2000 ; DOWN 4KB TO + CCF ; CREATE A + SBC HL,DE ; DECOMPRESSION BUFFER + LD SP,HL ; HL POINTS TO BUFFER + EX DE,HL ; START OF STACK BUFFER + PUSH DE ; SAVE IT + LD HL,CVDU_FONT ; START OF FONT DATA + CALL DLZSA2 ; DECOMPRESS TO DE + POP HL ; RECALL STACK BUFFER POSITION +#ELSE + LD HL,CVDU_FONT ; START OF FONT DATA +#ENDIF + LD DE,$2000 ; LENGTH OF FONT DATA LD C,31 ; DATA REGISTER CVDU_LOADFONT1: @@ -371,7 +388,15 @@ CVDU_LOADFONT1: LD A,D ; CHECK DE... OR E ; FOR COUNTER EXHAUSTED JR NZ,CVDU_LOADFONT1 ; LOOP TILL DONE + +#IF USEZLSA2 + LD HL,(CVDU_STACK) ; ERASE DECOMPRESS BUFFER + LD SP,HL ; BY RESTORING THE STACK + RET ; DONE +CVDU_STACK .DW 0 +#ELSE RET +#ENDIF ; ;---------------------------------------------------------------------- ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E diff --git a/Source/HBIOS/font8x11c.asm b/Source/HBIOS/font8x11c.asm new file mode 100644 index 00000000..be728ee0 --- /dev/null +++ b/Source/HBIOS/font8x11c.asm @@ -0,0 +1,85 @@ + .db $1A, $6F, $7E, $C3, $99, $F3, $E7, $FF, $E7, $7E, $00, $1A, $2B, $7F, $E6 + .db $66, $66, $C3, $1A, $4A, $0C, $18, $FC, $30, $FC, $60, $C0, $FA, $4B, $18 + .db $30, $60, $30, $18, $00, $7C, $00, $01, $90, $1B, $00, $F8, $00, $FB, $E9 + .db $3C, $23, $1A, $4A, $10, $38, $7C, $FE, $7C, $38, $10, $FD, $61, $C3, $C6 + .db $CC, $D8, $36, $6E, $D6, $BF, $06, $58, $6B, $C6, $8C, $0F, $B3, $F9, $6F + .db $E1, $33, $66, $34, $EA, $36, $6A, $DF, $82, $01, $04, $D0, $1F, $00, $6C + .db $00, $F6, $11, $0C, $78, $A5, $F9, $0E, $1B, $18, $3C, $18, $18, $D8, $70 + .db $40, $D6, $EB, $7E, $05, $A1, $EC, $7E, $48, $00, $9E, $40, $7C, $F2, $DB + .db $9B, $5F, $F1, $5B, $55, $51, $BB, $36, $54, $DB, $DB, $B8, $48, $18, $59 + .db $0C, $0C, $00, $B9, $01, $44, $CA, $56, $CC, $66, $D8, $FB, $08, $66, $66 + .db $CC, $27, $57, $47, $DA, $4B, $18, $BC, $1B, $5A, $C6, $7C, $7E, $C0, $CE + .db $C6, $7E, $00, $5A, $2F, $00, $76, $CC, $7C, $0C, $02, $40, $AD, $10, $78 + .db $30, $4C, $78, $8A, $0E, $70, $A4, $3B, $78, $C4, $70, $38, $8C, $78, $0C + .db $AB, $10, $7C, $C0, $0B, $F8, $AF, $06, $42, $C9, $E9, $78, $20, $D5, $02 + .db $FA, $0A, $6C, $6C, $28, $04, $29, $FE, $F2, $6B, $6C, $B6, $FB, $7C, $D0 + .db $7C, $16, $7C, $E8, $00, $60, $87, $52, $66, $C6, $6B, $FB, $43, $38, $6C + .db $38, $76, $DC, $CC, $76, $44, $32, $65, $69, $69, $60, $67, $65, $69, $01 + .db $4C, $60, $B2, $50, $38, $FE, $D0, $45, $91, $F1, $30, $FC, $03, $F4, $47 + .db $C4, $4F, $FC, $6C, $45, $03, $51, $06, $0C, $B1, $53, $C0, $80, $46, $18 + .db $0E, $C6, $C6, $D6, $2B, $7C, $22, $42, $25, $53, $30, $FC, $24, $1F, $CC + .db $0C, $38, $60, $CC, $A0, $53, $0C, $CC, $03, $5B, $45, $1C, $3C, $6C, $CC + .db $FE, $0C, $1E, $AB, $48, $C0, $11, $25, $30, $38, $60, $AA, $0C, $CC, $51 + .db $FC, $CC, $A7, $44, $7B, $08, $78, $6E, $02, $05, $A4, $28, $7C, $4D, $70 + .db $80, $22, $EA, $07, $27, $4C, $60, $24, $E9, $C0, $45, $51, $46, $4F, $21 + .db $42, $59, $45, $71, $6D, $18, $B6, $7C, $4E, $7C, $C6, $DE, $DE, $DC, $C0 + .db $78, $D7, $40, $44, $E8, $FE, $62, $1B, $E8, $FC, $08, $7C, $43, $45, $FA + .db $46, $3C, $66, $C0, $C0, $C0, $66, $3C, $30, $F8, $6C, $93, $66, $6C, $F4 + .db $40, $1F, $FE, $62, $68, $78, $68, $62, $FE, $A0, $55, $60, $F0, $D4, $60 + .db $11, $F3, $66, $3E, $42, $B4, $43, $B3, $62, $13, $66, $11, $10, $1E, $0C + .db $F4, $45, $24, $FA, $E6, $66, $6C, $78, $6C, $66, $E6, $69, $F0, $75, $53 + .db $62, $66, $B3, $79, $1A, $C6, $EE, $FE, $FE, $C0, $03, $F8, $15, $E6, $F6 + .db $DE, $CE, $65, $AB, $E9, $C6, $46, $66, $49, $60, $92, $26, $FD, $02, $CE + .db $7C, $0E, $45, $B3, $7D, $78, $CC, $E0, $78, $1C, $C1, $4F, $B4, $87, $0A + .db $4D, $C6, $BE, $06, $F5, $6C, $38, $FC, $1F, $D6, $D6, $FE, $6C, $4A, $6C + .db $00, $62, $95, $E9, $CC, $85, $61, $FB, $4F, $FE, $CC, $98, $30, $62, $C6 + .db $FE, $0A, $60, $23, $55, $6A, $C0, $B5, $33, $06, $02, $0A, $18, $F5, $23 + .db $69, $10, $C0, $A7, $F5, $6C, $6A, $FE, $6A, $66, $78, $43, $D2, $94, $0C + .db $7C, $F5, $77, $48, $E0, $3D, $61, $A0, $2D, $DC, $95, $CC, $C0, $F0, $F0 + .db $29, $0C, $36, $CC, $76, $5F, $6E, $FC, $69, $53, $60, $F0, $0E, $62, $04 + .db $EA, $76, $4B, $F8, $BE, $F0, $6C, $76, $6B, $E6, $07, $A7, $BC, $1F, $48 + .db $0C, $BC, $66, $9F, $F2, $E0, $60, $43, $DF, $6D, $70, $7F, $03, $F8, $0A + .db $EC, $FE, $D6, $04, $11, $DC, $66, $F5, $46, $7C, $E9, $CC, $26, $4A, $7C + .db $91, $46, $92, $2C, $1E, $5F, $4C, $76, $7C, $A6, $63, $43, $0E, $A2, $FF + .db $DE, $B6, $36, $1C, $04, $47, $45, $0A, $63, $A0, $04, $63, $A0, $24, $5F + .db $63, $9F, $45, $D4, $45, $3A, $62, $46, $60, $9F, $53, $64, $FC, $03, $A0 + .db $90, $E8, $E0, $43, $B3, $0D, $18, $FA, $01, $01, $63, $02, $43, $05, $63 + .db $D1, $86, $E0, $A1, $10, $3C, $3C, $64, $74, $5A, $2A, $1C, $36, $63, $7F + .db $63, $9F, $F1, $03, $06, $53, $FE, $C6, $66, $48, $28, $5A, $05, $F7, $76 + .db $DC, $0B, $56, $6C, $00, $DF, $01, $07, $A0, $9E, $4F, $3F, $6D, $CC, $FF + .db $CC, $CD, $CF, $14, $BB, $1E, $66, $3C, $06, $3C, $54, $BC, $2E, $FE, $62 + .db $78, $62, $FE, $33, $07, $A0, $F3, $10, $28, $44, $B3, $04, $AF, $43, $D4 + .db $8E, $00, $CF, $0F, $18, $A1, $F7, $20, $50, $0E, $8C, $CC, $0F, $A5, $FF + .db $BC, $E9, $F6, $45, $66, $82, $1D, $45, $BE, $8D, $7C, $EA, $CA, $14, $0C + .db $18, $46, $3A, $F5, $C6, $7C, $06, $A0, $29, $6C, $23, $59, $03, $86, $E4 + .db $52, $5D, $3D, $67, $6E, $7E, $76, $E6, $BC, $B3, $EF, $C6, $11, $EF, $C6 + .db $4F, $C6, $BE, $0F, $EE, $C6, $92, $18, $30, $13, $AC, $78, $FF, $7A, $6A + .db $7C, $07, $85, $F2, $FA, $1F, $D8, $CC, $C6, $CC, $35, $AA, $55, $82, $FE + .db $98, $AA, $30, $7D, $AC, $00, $E0, $95, $F8, $D6, $D0, $D6, $83, $FE, $61 + .db $E8, $64, $84, $D5, $FA, $4D, $1E, $31, $FC, $60, $F8, $33, $1E, $41, $AA + .db $A1, $FE, $43, $D4, $E8, $28, $86, $F5, $CF, $70, $3E, $61, $9E, $60, $A0 + .db $37, $86, $7C, $55, $1A, $3C, $42, $99, $A1, $A1, $99, $42, $3C, $A2, $9C + .db $6C, $6C, $3E, $00, $7E, $DD, $98, $E8, $33, $F6, $66, $33, $95, $FC, $0C + .db $6D, $4A, $66, $BE, $4C, $66, $C9, $FB, $1F, $B9, $A5, $B9, $A5, $65, $F3 + .db $64, $27, $85, $85, $A6, $E5, $3F, $2C, $FC, $75, $18, $30, $CE, $80, $DF + .db $A7, $EE, $38, $94, $50, $20, $82, $03, $FD, $E9, $66, $B1, $7B, $C0, $F8 + .db $E8, $7F, $10, $7B, $1B, $F0, $47, $BB, $47, $D4, $82, $5F, $18, $38, $18 + .db $18, $3C, $92, $1D, $46, $82, $41, $52, $A5, $F6, $FC, $42, $7F, $CD, $CC + .db $CF, $CC, $CD, $7F, $9C, $7E, $DB, $DE, $D8, $7E, $FF, $FB, $65, $95, $63 + .db $B6, $AD, $60, $0C, $82, $FF, $2C, $ED, $FF, $06, $24, $5A, $0F, $1F, $11 + .db $EC, $F8, $02, $EA, $1F, $04, $A1, $EF, $F8, $43, $D4, $25, $51, $47, $C9 + .db $EF, $FF, $12, $47, $9D, $25, $5F, $35, $88, $22, $43, $80, $26, $F9, $07 + .db $62, $27, $CC, $2D, $FF, $0E, $36, $F5, $23, $1E, $0A, $3F, $30, $37, $FB + .db $0D, $FE, $06, $F6, $01, $5E, $00, $37, $30, $3F, $D4, $1E, $F6, $06, $FE + .db $A5, $4B, $37, $D4, $24, $43, $D4, $45, $A8, $2E, $F7, $51, $4F, $F7, $9D + .db $2D, $F7, $5F, $0E, $FF, $81, $C2, $26, $EF, $3C, $E8, $18, $E8, $3C, $A4 + .db $CA, $96, $E9, $7F, $04, $FC, $0E, $0C, $FE, $0C, $B7, $60, $30, $8B, $0A + .db $0F, $18, $10, $F7, $10, $28, $F7, $76, $DC, $0C, $F3, $6C, $00, $85, $CB + .db $22, $51, $65, $3D, $BF, $1B, $7E, $D8, $6E, $E1, $55, $54, $0C, $78, $A8 + .db $A6, $EA, $5F, $0C, $18, $45, $A8, $26, $5E, $F3, $6C, $00, $85, $E0, $EF + .db $70, $11, $EF, $70, $06, $AB, $28, $D8, $A6, $D1, $DE, $FD, $34, $18, $2C + .db $7C, $B3, $76, $DC, $EE, $5E, $87, $E0, $F5, $15, $44, $39, $26, $82, $FC + .db $01, $86, $E1, $9E, $2E, $3D, $66, $6E, $76, $66, $E0, $A6, $EA, $54, $0C + .db $18, $45, $71, $06, $AB, $2A, $CC, $66, $CC, $8F, $CC, $D1, $8E, $8B, $7C + .db $D5, $E6, $44, $DF, $26, $47, $00, $F0, $E8 + diff --git a/Source/HBIOS/font8x11u.asm b/Source/HBIOS/font8x11u.asm new file mode 100644 index 00000000..a8d93a80 --- /dev/null +++ b/Source/HBIOS/font8x11u.asm @@ -0,0 +1,260 @@ +; Zap font zap-vga-09 (c) John Zaitseff released under GNU General Public Licence. Refer www.gnu.org/licenses/ +; + .DB $7E, $C3, $99, $F3, $E7, $FF, $E7, $7E, $00, $00, $00 + .DB $00, $00, $7F, $E6, $66, $66, $C3, $00, $00, $00, $00 + .DB $0C, $18, $FC, $30, $FC, $60, $C0, $00, $00, $00, $00 + .DB $18, $30, $60, $30, $18, $00, $7C, $00, $00, $00, $00 + .DB $60, $30, $18, $30, $60, $00, $F8, $00, $00, $00, $00 + .DB $00, $00, $3C, $3C, $3C, $3C, $00, $00, $00, $00, $00 + .DB $10, $38, $7C, $FE, $7C, $38, $10, $00, $00, $00, $00 + .DB $C3, $C6, $CC, $D8, $36, $6E, $D6, $BF, $06, $00, $00 + .DB $C3, $C6, $CC, $D8, $36, $6B, $C6, $8C, $0F, $00, $00 + .DB $E1, $33, $66, $34, $EA, $36, $6A, $DF, $82, $00, $00 + .DB $18, $18, $18, $18, $00, $18, $18, $18, $18, $00, $00 + .DB $6C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $0C, $78, $00, $00, $00 + .DB $0E, $1B, $18, $3C, $18, $18, $D8, $70, $00, $00, $00 + .DB $18, $18, $7E, $18, $18, $18, $18, $00, $00, $00, $00 + .DB $18, $18, $7E, $18, $7E, $18, $18, $00, $00, $00, $00 + .DB $00, $CC, $D8, $30, $60, $DB, $9B, $00, $00, $00, $00 + .DB $F1, $5B, $55, $51, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $DB, $DB, $00, $00, $00, $00 + .DB $00, $0C, $18, $30, $18, $0C, $00, $00, $00, $00, $00 + .DB $00, $30, $18, $0C, $18, $30, $00, $00, $00, $00, $00 + .DB $CC, $CC, $66, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $66, $66, $CC, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $66, $66, $CC, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $CC, $CC, $66, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $18, $18, $0C, $00, $00, $00 + .DB $C6, $7C, $7E, $C0, $CE, $C6, $7E, $00, $00, $00, $00 + .DB $C6, $7C, $00, $76, $CC, $7C, $0C, $F8, $00, $00, $00 + .DB $30, $00, $78, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $00, $00, $70, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $78, $C4, $70, $38, $8C, $78, $0C, $78, $00, $00, $00 + .DB $00, $7C, $C0, $78, $0C, $F8, $0C, $78, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $30, $78, $78, $30, $30, $00, $30, $00, $00, $00, $00 + .DB $6C, $6C, $28, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $6C, $6C, $FE, $6C, $FE, $6C, $6C, $00, $00, $00, $00 + .DB $10, $7C, $D0, $7C, $16, $7C, $10, $00, $00, $00, $00 + .DB $00, $C6, $CC, $18, $30, $66, $C6, $00, $00, $00, $00 + .DB $38, $6C, $38, $76, $DC, $CC, $76, $00, $00, $00, $00 + .DB $18, $18, $30, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $18, $30, $60, $60, $60, $30, $18, $00, $00, $00, $00 + .DB $60, $30, $18, $18, $18, $30, $60, $00, $00, $00, $00 + .DB $00, $6C, $38, $FE, $38, $6C, $00, $00, $00, $00, $00 + .DB $00, $30, $30, $FC, $30, $30, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $18, $18, $30, $00, $00, $00 + .DB $00, $00, $00, $FC, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $30, $30, $00, $00, $00, $00 + .DB $06, $0C, $18, $30, $60, $C0, $80, $00, $00, $00, $00 + .DB $7C, $C6, $C6, $D6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $30, $70, $30, $30, $30, $30, $FC, $00, $00, $00, $00 + .DB $78, $CC, $0C, $38, $60, $CC, $FC, $00, $00, $00, $00 + .DB $78, $CC, $0C, $38, $0C, $CC, $78, $00, $00, $00, $00 + .DB $1C, $3C, $6C, $CC, $FE, $0C, $1E, $00, $00, $00, $00 + .DB $FC, $C0, $F8, $0C, $0C, $CC, $78, $00, $00, $00, $00 + .DB $38, $60, $C0, $F8, $CC, $CC, $78, $00, $00, $00, $00 + .DB $FC, $CC, $0C, $18, $30, $30, $30, $00, $00, $00, $00 + .DB $78, $CC, $CC, $78, $CC, $CC, $78, $00, $00, $00, $00 + .DB $78, $CC, $CC, $7C, $0C, $18, $70, $00, $00, $00, $00 + .DB $00, $30, $30, $00, $00, $30, $30, $00, $00, $00, $00 + .DB $00, $30, $30, $00, $00, $30, $30, $60, $00, $00, $00 + .DB $18, $30, $60, $C0, $60, $30, $18, $00, $00, $00, $00 + .DB $00, $00, $FC, $00, $FC, $00, $00, $00, $00, $00, $00 + .DB $60, $30, $18, $0C, $18, $30, $60, $00, $00, $00, $00 + .DB $78, $CC, $0C, $18, $30, $00, $30, $00, $00, $00, $00 + .DB $7C, $C6, $DE, $DE, $DC, $C0, $78, $00, $00, $00, $00 + .DB $38, $6C, $C6, $C6, $FE, $C6, $C6, $00, $00, $00, $00 + .DB $FC, $66, $66, $7C, $66, $66, $FC, $00, $00, $00, $00 + .DB $3C, $66, $C0, $C0, $C0, $66, $3C, $00, $00, $00, $00 + .DB $F8, $6C, $66, $66, $66, $6C, $F8, $00, $00, $00, $00 + .DB $FE, $62, $68, $78, $68, $62, $FE, $00, $00, $00, $00 + .DB $FE, $62, $68, $78, $68, $60, $F0, $00, $00, $00, $00 + .DB $3C, $66, $C0, $C0, $CE, $66, $3E, $00, $00, $00, $00 + .DB $C6, $C6, $C6, $FE, $C6, $C6, $C6, $00, $00, $00, $00 + .DB $78, $30, $30, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $1E, $0C, $0C, $0C, $CC, $CC, $78, $00, $00, $00, $00 + .DB $E6, $66, $6C, $78, $6C, $66, $E6, $00, $00, $00, $00 + .DB $F0, $60, $60, $60, $62, $66, $FE, $00, $00, $00, $00 + .DB $C6, $EE, $FE, $FE, $D6, $C6, $C6, $00, $00, $00, $00 + .DB $C6, $E6, $F6, $DE, $CE, $C6, $C6, $00, $00, $00, $00 + .DB $7C, $C6, $C6, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $FC, $66, $66, $7C, $60, $60, $F0, $00, $00, $00, $00 + .DB $7C, $C6, $C6, $C6, $C6, $CE, $7C, $0E, $00, $00, $00 + .DB $FC, $66, $66, $7C, $6C, $66, $E6, $00, $00, $00, $00 + .DB $78, $CC, $E0, $78, $1C, $CC, $78, $00, $00, $00, $00 + .DB $FC, $B4, $30, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $C6, $C6, $C6, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $C6, $C6, $C6, $C6, $C6, $6C, $38, $00, $00, $00, $00 + .DB $C6, $C6, $C6, $D6, $D6, $FE, $6C, $00, $00, $00, $00 + .DB $C6, $C6, $6C, $38, $6C, $C6, $C6, $00, $00, $00, $00 + .DB $CC, $CC, $CC, $78, $30, $30, $78, $00, $00, $00, $00 + .DB $FE, $CC, $98, $30, $62, $C6, $FE, $00, $00, $00, $00 + .DB $78, $60, $60, $60, $60, $60, $78, $00, $00, $00, $00 + .DB $C0, $60, $30, $18, $0C, $06, $02, $00, $00, $00, $00 + .DB $78, $18, $18, $18, $18, $18, $78, $00, $00, $00, $00 + .DB $10, $38, $6C, $C6, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $FE, $00, $00, $00 + .DB $30, $30, $18, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $78, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $E0, $60, $60, $7C, $66, $66, $DC, $00, $00, $00, $00 + .DB $00, $00, $78, $CC, $C0, $CC, $78, $00, $00, $00, $00 + .DB $1C, $0C, $0C, $7C, $CC, $CC, $76, $00, $00, $00, $00 + .DB $00, $00, $78, $CC, $FC, $C0, $78, $00, $00, $00, $00 + .DB $38, $6C, $60, $F0, $60, $60, $F0, $00, $00, $00, $00 + .DB $00, $00, $76, $CC, $CC, $7C, $0C, $F8, $00, $00, $00 + .DB $E0, $60, $6C, $76, $66, $66, $E6, $00, $00, $00, $00 + .DB $30, $00, $70, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $0C, $00, $1C, $0C, $0C, $CC, $CC, $78, $00, $00, $00 + .DB $E0, $60, $66, $6C, $78, $6C, $E6, $00, $00, $00, $00 + .DB $70, $30, $30, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $00, $00, $EC, $FE, $D6, $D6, $D6, $00, $00, $00, $00 + .DB $00, $00, $DC, $66, $66, $66, $66, $00, $00, $00, $00 + .DB $00, $00, $78, $CC, $CC, $CC, $78, $00, $00, $00, $00 + .DB $00, $00, $DC, $66, $66, $7C, $60, $F0, $00, $00, $00 + .DB $00, $00, $76, $CC, $CC, $7C, $0C, $1E, $00, $00, $00 + .DB $00, $00, $DC, $76, $60, $60, $F0, $00, $00, $00, $00 + .DB $00, $00, $7C, $C0, $78, $0C, $F8, $00, $00, $00, $00 + .DB $10, $30, $FC, $30, $30, $36, $1C, $00, $00, $00, $00 + .DB $00, $00, $CC, $CC, $CC, $CC, $76, $00, $00, $00, $00 + .DB $00, $00, $C6, $C6, $C6, $6C, $38, $00, $00, $00, $00 + .DB $00, $00, $C6, $D6, $D6, $FE, $6C, $00, $00, $00, $00 + .DB $00, $00, $C6, $6C, $38, $6C, $C6, $00, $00, $00, $00 + .DB $00, $00, $CC, $CC, $CC, $7C, $0C, $F8, $00, $00, $00 + .DB $00, $00, $FC, $98, $30, $64, $FC, $00, $00, $00, $00 + .DB $1C, $30, $30, $E0, $30, $30, $1C, $00, $00, $00, $00 + .DB $18, $18, $18, $18, $18, $18, $18, $18, $00, $00, $00 + .DB $E0, $30, $30, $1C, $30, $30, $E0, $00, $00, $00, $00 + .DB $76, $DC, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $18, $3C, $3C, $18, $00, $00, $00, $00, $00 + .DB $C0, $60, $1C, $36, $63, $7F, $63, $00, $00, $00, $00 + .DB $03, $06, $38, $6C, $C6, $FE, $C6, $00, $00, $00, $00 + .DB $10, $28, $00, $7C, $C6, $FE, $C6, $00, $00, $00, $00 + .DB $76, $DC, $00, $7C, $C6, $FE, $C6, $00, $00, $00, $00 + .DB $6C, $00, $38, $6C, $C6, $FE, $C6, $00, $00, $00, $00 + .DB $38, $6C, $38, $6C, $C6, $FE, $C6, $00, $00, $00, $00 + .DB $3F, $6D, $CC, $FF, $CC, $CD, $CF, $00, $00, $00, $00 + .DB $3C, $66, $C0, $C0, $66, $3C, $06, $3C, $00, $00, $00 + .DB $60, $30, $FE, $62, $78, $62, $FE, $00, $00, $00, $00 + .DB $0C, $18, $FE, $62, $78, $62, $FE, $00, $00, $00, $00 + .DB $10, $28, $FE, $62, $78, $62, $FE, $00, $00, $00, $00 + .DB $6C, $00, $FE, $62, $78, $62, $FE, $00, $00, $00, $00 + .DB $60, $30, $00, $78, $30, $30, $78, $00, $00, $00, $00 + .DB $18, $30, $00, $78, $30, $30, $78, $00, $00, $00, $00 + .DB $20, $50, $00, $78, $30, $30, $78, $00, $00, $00, $00 + .DB $CC, $00, $78, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $F8, $6C, $66, $F6, $66, $6C, $F8, $00, $00, $00, $00 + .DB $76, $DC, $00, $E6, $F6, $DE, $CE, $00, $00, $00, $00 + .DB $60, $30, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $0C, $18, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $10, $28, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $76, $DC, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $6C, $00, $7C, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $00, $00, $6C, $38, $6C, $00, $00, $00, $00, $00, $00 + .DB $3D, $67, $6E, $7E, $76, $E6, $BC, $00, $00, $00, $00 + .DB $60, $30, $00, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $0C, $18, $00, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $10, $28, $00, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $6C, $00, $C6, $C6, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $18, $30, $CC, $CC, $78, $30, $78, $00, $00, $00, $00 + .DB $F0, $60, $7C, $66, $7C, $60, $F0, $00, $00, $00, $00 + .DB $78, $CC, $CC, $D8, $CC, $C6, $CC, $00, $00, $00, $00 + .DB $AA, $55, $AA, $55, $AA, $55, $AA, $55, $AA, $00, $00 + .DB $30, $00, $30, $30, $78, $78, $30, $00, $00, $00, $00 + .DB $00, $10, $7C, $D6, $D0, $D6, $7C, $10, $00, $00, $00 + .DB $38, $6C, $64, $F0, $60, $66, $FC, $00, $00, $00, $00 + .DB $1E, $31, $FC, $60, $F8, $33, $1E, $00, $00, $00, $00 + .DB $CC, $CC, $78, $FC, $30, $FC, $30, $00, $00, $00, $00 + .DB $28, $10, $7C, $C0, $78, $0C, $F8, $00, $00, $00, $00 + .DB $3E, $61, $3C, $66, $66, $3C, $86, $7C, $00, $00, $00 + .DB $28, $10, $7C, $C0, $78, $0C, $F8, $00, $00, $00, $00 + .DB $3C, $42, $99, $A1, $A1, $99, $42, $3C, $00, $00, $00 + .DB $3C, $6C, $6C, $3E, $00, $7E, $00, $00, $00, $00, $00 + .DB $00, $33, $66, $CC, $66, $33, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $FC, $0C, $0C, $00, $00, $00, $00, $00 + .DB $00, $66, $3C, $66, $66, $3C, $66, $00, $00, $00, $00 + .DB $3C, $42, $B9, $A5, $B9, $A5, $42, $3C, $00, $00, $00 + .DB $7C, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $38, $6C, $6C, $38, $00, $00, $00, $00, $00, $00, $00 + .DB $30, $30, $FC, $30, $30, $00, $FC, $00, $00, $00, $00 + .DB $38, $6C, $18, $30, $7C, $00, $00, $00, $00, $00, $00 + .DB $78, $0C, $38, $0C, $78, $00, $00, $00, $00, $00, $00 + .DB $50, $20, $FC, $98, $30, $64, $FC, $00, $00, $00, $00 + .DB $00, $00, $66, $66, $66, $66, $7B, $C0, $00, $00, $00 + .DB $7F, $DB, $DB, $7B, $1B, $1B, $1B, $00, $00, $00, $00 + .DB $00, $00, $00, $30, $30, $00, $00, $00, $00, $00, $00 + .DB $50, $20, $FC, $98, $30, $64, $FC, $00, $00, $00, $00 + .DB $18, $38, $18, $18, $3C, $00, $00, $00, $00, $00, $00 + .DB $38, $6C, $6C, $38, $00, $7C, $00, $00, $00, $00, $00 + .DB $00, $CC, $66, $33, $66, $CC, $00, $00, $00, $00, $00 + .DB $7F, $CD, $CC, $CF, $CC, $CD, $7F, $00, $00, $00, $00 + .DB $00, $00, $7E, $DB, $DE, $D8, $7E, $00, $00, $00, $00 + .DB $CC, $00, $CC, $CC, $78, $30, $78, $00, $00, $00, $00 + .DB $30, $00, $30, $60, $C0, $CC, $78, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $FF, $00, $00, $00, $00, $00, $00 + .DB $18, $18, $18, $18, $18, $18, $18, $18, $18, $00, $00 + .DB $00, $00, $00, $00, $1F, $18, $18, $18, $18, $00, $00 + .DB $00, $00, $00, $00, $F8, $18, $18, $18, $18, $00, $00 + .DB $18, $18, $18, $18, $1F, $00, $00, $00, $00, $00, $00 + .DB $18, $18, $18, $18, $F8, $00, $00, $00, $00, $00, $00 + .DB $18, $18, $18, $18, $1F, $18, $18, $18, $18, $00, $00 + .DB $18, $18, $18, $18, $F8, $18, $18, $18, $18, $00, $00 + .DB $00, $00, $00, $00, $FF, $18, $18, $18, $18, $00, $00 + .DB $18, $18, $18, $18, $FF, $00, $00, $00, $00, $00, $00 + .DB $18, $18, $18, $18, $FF, $18, $18, $18, $18, $00, $00 + .DB $88, $22, $88, $22, $88, $22, $88, $22, $88, $00, $00 + .DB $FF, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $FF, $00, $00, $00, $00, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $FF, $00, $00, $00, $00 + .DB $00, $00, $00, $00, $00, $00, $00, $00, $FF, $00, $00 + .DB $00, $00, $00, $FF, $00, $FF, $00, $00, $00, $00, $00 + .DB $36, $36, $36, $36, $36, $36, $36, $36, $36, $00, $00 + .DB $00, $00, $00, $3F, $30, $37, $36, $36, $36, $00, $00 + .DB $00, $00, $00, $FE, $06, $F6, $36, $36, $36, $00, $00 + .DB $36, $36, $36, $37, $30, $3F, $00, $00, $00, $00, $00 + .DB $36, $36, $36, $F6, $06, $FE, $00, $00, $00, $00, $00 + .DB $36, $36, $36, $37, $30, $37, $36, $36, $36, $00, $00 + .DB $36, $36, $36, $F6, $06, $F6, $36, $36, $36, $00, $00 + .DB $00, $00, $00, $FF, $00, $F7, $36, $36, $36, $00, $00 + .DB $36, $36, $36, $F7, $00, $FF, $00, $00, $00, $00, $00 + .DB $36, $36, $36, $F7, $00, $F7, $36, $36, $36, $00, $00 + .DB $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $FF, $00, $00 + .DB $18, $3C, $7E, $18, $18, $18, $18, $00, $00, $00, $00 + .DB $18, $18, $18, $18, $7E, $3C, $18, $00, $00, $00, $00 + .DB $00, $18, $30, $7F, $30, $18, $00, $00, $00, $00, $00 + .DB $00, $18, $0C, $FE, $0C, $18, $00, $00, $00, $00, $00 + .DB $60, $30, $78, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $18, $30, $78, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $10, $28, $78, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $76, $DC, $78, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $6C, $00, $78, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $38, $6C, $38, $0C, $7C, $CC, $76, $00, $00, $00, $00 + .DB $00, $00, $7E, $1B, $7E, $D8, $6E, $00, $00, $00, $00 + .DB $00, $78, $CC, $C0, $CC, $78, $0C, $78, $00, $00, $00 + .DB $60, $30, $78, $CC, $FC, $C0, $78, $00, $00, $00, $00 + .DB $18, $30, $78, $CC, $FC, $C0, $78, $00, $00, $00, $00 + .DB $10, $28, $78, $CC, $FC, $C0, $78, $00, $00, $00, $00 + .DB $6C, $00, $78, $CC, $FC, $C0, $78, $00, $00, $00, $00 + .DB $60, $30, $00, $70, $30, $30, $78, $00, $00, $00, $00 + .DB $18, $30, $00, $70, $30, $30, $78, $00, $00, $00, $00 + .DB $20, $50, $00, $70, $30, $30, $78, $00, $00, $00, $00 + .DB $D8, $00, $70, $30, $30, $30, $78, $00, $00, $00, $00 + .DB $34, $18, $2C, $7C, $CC, $CC, $78, $00, $00, $00, $00 + .DB $76, $DC, $00, $DC, $66, $66, $66, $00, $00, $00, $00 + .DB $60, $30, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $0C, $18, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $10, $28, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $76, $DC, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $00, $6C, $00, $7C, $C6, $C6, $7C, $00, $00, $00, $00 + .DB $30, $30, $00, $FC, $00, $30, $30, $00, $00, $00, $00 + .DB $00, $3D, $66, $6E, $76, $66, $BC, $00, $00, $00, $00 + .DB $60, $30, $00, $CC, $CC, $CC, $76, $00, $00, $00, $00 + .DB $18, $30, $00, $CC, $CC, $CC, $76, $00, $00, $00, $00 + .DB $20, $50, $00, $CC, $CC, $CC, $76, $00, $00, $00, $00 + .DB $CC, $00, $CC, $CC, $CC, $CC, $76, $00, $00, $00, $00 + .DB $18, $30, $CC, $CC, $CC, $7C, $0C, $F8, $00, $00, $00 + .DB $E0, $60, $7C, $66, $66, $7C, $60, $F0, $00, $00, $00 + .DB $CC, $00, $CC, $CC, $CC, $7C, $0C, $F8, $00, $00, $00 + + diff --git a/Source/HBIOS/font8x16c.asm b/Source/HBIOS/font8x16c.asm new file mode 100644 index 00000000..f2112d23 --- /dev/null +++ b/Source/HBIOS/font8x16c.asm @@ -0,0 +1,99 @@ + .db $0F, $00, $F8, $38, $4E, $7E, $81, $A5, $81, $81, $BD, $99, $2C, $7E, $87 + .db $FC, $7C, $FE, $FE, $D6, $FE, $FE, $BA, $C6, $FE, $7C, $F8, $19, $00, $6C + .db $EE, $FE, $20, $35, $38, $10, $80, $3D, $10, $38, $7C, $98, $26, $00, $2C + .db $40, $DC, $08, $6C, $07, $00, $49, $7C, $CF, $22, $8F, $06, $F0, $18, $3C + .db $0C, $18, $AF, $0A, $FF, $F0, $E7, $C3, $F3, $E7, $FF, $04, $0F, $08, $66 + .db $45, $DF, $04, $0F, $08, $99, $35, $C3, $E7, $03, $19, $1E, $0E, $1E, $36 + .db $78, $CC, $FF, $4C, $78, $44, $44, $D3, $10, $7E, $18, $EB, $00, $F9, $10 + .db $1E, $1A, $1E, $18, $3C, $78, $F8, $70, $0F, $30, $3E, $36, $5C, $41, $36 + .db $76, $F6, $66, $0E, $1E, $0C, $83, $51, $DB, $7E, $A0, $5D, $3C, $7E, $DB + .db $18, $30, $FD, $66, $80, $E0, $F0, $FC, $FE, $FC, $F0, $E0, $80, $5E, $02 + .db $0E, $3E, $7E, $FE, $7E, $3E, $0E, $02, $53, $4A, $7E, $B0, $4E, $7E, $4E + .db $0C, $66, $FC, $21, $24, $8F, $11, $7F, $DB, $F1, $7B, $1B, $65, $D0, $38 + .db $5C, $C6, $C6, $60, $7C, $F6, $DE, $7C, $0C, $6F, $7C, $AA, $13, $62, $CD + .db $47, $B0, $49, $7E, $4D, $47, $A0, $40, $47, $40, $01, $9F, $46, $90, $06 + .db $FF, $31, $0C, $0E, $FF, $0E, $0C, $00, $FF, $32, $30, $70, $FE, $70, $30 + .db $00, $E8, $C0, $2F, $FE, $02, $7F, $23, $24, $66, $FF, $66, $24, $70, $63 + .db $7D, $47, $75, $1F, $08, $7C, $61, $5C, $67, $05, $54, $67, $63, $69, $3C + .db $B3, $65, $B0, $09, $36, $F0, $2F, $14, $3F, $08, $6C, $0B, $FE, $E7, $4E + .db $6C, $50, $FD, $7C, $C6, $C0, $78, $3C, $06, $C6, $7C, $18, $18, $FC, $43 + .db $62, $66, $0C, $18, $30, $66, $C6, $79, $38, $6C, $38, $30, $76, $7E, $50 + .db $4C, $76, $34, $28, $0C, $24, $47, $8F, $41, $D5, $03, $FB, $4D, $18, $1E + .db $01, $02, $F4, $01, $47, $8D, $13, $50, $38, $FE, $BA, $47, $5D, $62, $11 + .db $27, $81, $47, $A8, $AA, $4F, $FE, $28, $07, $00, $51, $02, $06, $61, $7F + .db $00, $60, $C0, $80, $50, $7F, $10, $CE, $DE, $F6, $E6, $52, $76, $18, $78 + .db $7E, $27, $00, $43, $D0, $F6, $C6, $FE, $FE, $37, $06, $06, $3C, $06, $06 + .db $06, $7D, $0C, $1C, $3C, $6C, $CC, $CC, $FE, $0C, $0C, $1E, $16, $61, $73 + .db $2B, $FC, $08, $46, $A0, $21, $08, $C6, $F8, $26, $4B, $FE, $B1, $02, $F0 + .db $25, $02, $20, $27, $2A, $23, $4D, $7E, $A0, $46, $24, $23, $E8, $27, $63 + .db $66, $B8, $43, $33, $6C, $60, $C0, $46, $01, $67, $FF, $02, $20, $43, $0E + .db $47, $30, $00, $9F, $65, $20, $46, $90, $08, $DE, $7E, $0F, $DC, $C0, $7E + .db $50, $41, $6F, $EA, $FE, $84, $10, $E9, $FC, $8A, $7C, $FF, $0B, $AE, $FC + .db $90, $11, $C2, $C0, $F0, $3C, $C2, $66, $3C, $0F, $B4, $F8, $6C, $EE, $75 + .db $6C, $F8, $85, $3F, $68, $66, $60, $64, $7C, $64, $60, $60, $66, $FE, $50 + .db $57, $60, $F0, $90, $61, $DE, $6F, $CE, $F0, $0F, $4D, $C6, $91, $46, $90 + .db $15, $3C, $18, $2F, $3C, $84, $5E, $03, $D8, $D8, $70, $D0, $FE, $CC, $D8 + .db $F0, $F0, $D8, $CC, $13, $F0, $60, $F0, $48, $62, $90, $26, $FE, $3F, $EE + .db $EE, $FE, $D6, $D6, $D6, $A0, $71, $F0, $E6, $E6, $49, $CE, $8F, $67, $A0 + .db $20, $65, $90, $46, $20, $52, $66, $7C, $60, $27, $41, $40, $BE, $57, $7C + .db $06, $00, $49, $78, $1B, $6F, $E6, $30, $11, $77, $70, $1C, $20, $57, $7E + .db $5A, $50, $55, $4F, $C6, $A0, $26, $8E, $AE, $6C, $D0, $43, $A4, $5E, $02 + .db $D6, $FE, $EE, $60, $23, $63, $8B, $87, $E2, $A0, $4A, $3C, $00, $86, $FF + .db $D0, $E9, $86, $97, $60, $C2, $80, $0F, $0D, $60, $6E, $7C, $1D, $F3, $80 + .db $C0, $2D, $02, $0F, $0D, $0C, $24, $0F, $69, $10, $30, $0F, $00, $EE, $8C + .db $FF, $91, $2F, $0C, $47, $48, $78, $C4, $A0, $F1, $50, $EC, $DC, $51, $00 + .db $E0, $96, $6E, $66, $00, $67, $FD, $4E, $C0, $20, $51, $1C, $0C, $D2, $02 + .db $F0, $2F, $7E, $21, $F7, $C6, $FE, $A8, $36, $F0, $20, $E9, $FC, $37, $30 + .db $78, $04, $69, $76, $02, $71, $CE, $76, $BE, $47, $A0, $AF, $E6, $F0, $58 + .db $6D, $38, $00, $86, $FE, $03, $4B, $1C, $30, $A1, $0E, $45, $70, $60, $6F + .db $E9, $6C, $46, $D0, $06, $FE, $8F, $1C, $5D, $1E, $61, $00, $EB, $C6, $A4 + .db $4D, $EC, $DC, $47, $60, $10, $66, $00, $26, $85, $F0, $FD, $4E, $F0, $60 + .db $42, $30, $61, $B8, $2F, $1E, $02, $20, $25, $11, $46, $00, $F6, $7C, $06 + .db $4D, $30, $21, $4F, $36, $80, $6B, $CC, $F0, $EF, $76, $08, $66, $00, $26 + .db $84, $F0, $FE, $2F, $6C, $2F, $AA, $6C, $8A, $27, $02, $65, $E0, $86, $EF + .db $32, $82, $FE, $54, $62, $FE, $10, $E9, $0E, $EA, $70, $4F, $0E, $00, $10 + .db $64, $FB, $24, $E9, $70, $EA, $0E, $6C, $70, $09, $F6, $76, $DC, $A7, $D3 + .db $5E, $A1, $EF, $3B, $65, $33, $F2, $3C, $66, $81, $8E, $60, $9F, $4B, $38 + .db $53, $01, $EE, $44, $7F, $A6, $61, $67, $30, $4F, $60, $39, $8F, $CC, $E0 + .db $58, $00, $26, $8E, $86, $92, $26, $8E, $A6, $01, $26, $0F, $87, $C1, $3D + .db $81, $D2, $28, $0C, $38, $44, $B0, $46, $A0, $46, $B0, $26, $86, $D0, $F1 + .db $27, $5F, $E8, $66, $86, $E0, $85, $C8, $D3, $26, $46, $D0, $27, $04, $8F + .db $C6, $E1, $2F, $45, $71, $01, $78, $24, $46, $21, $A8, $FE, $F4, $B0, $E9 + .db $7C, $6E, $FE, $40, $FD, $66, $DB, $1B, $7F, $D8, $D8, $DF, $11, $7E, $D8 + .db $FD, $09, $FE, $4E, $DE, $00, $87, $F5, $C0, $36, $C6, $00, $88, $46, $50 + .db $26, $46, $D0, $66, $B0, $66, $E0, $27, $84, $8A, $18, $E4, $0F, $47, $50 + .db $8E, $7C, $E8, $60, $25, $EE, $C6, $66, $10, $65, $C0, $6D, $18, $A0, $40 + .db $42, $E9, $F0, $7C, $0C, $66, $F6, $6C, $E1, $A5, $F1, $AE, $3C, $C8, $F0 + .db $F8, $3E, $63, $63, $30, $1C, $06, $63, $63, $3E, $00, $1C, $06, $68, $32 + .db $38, $0E, $66, $20, $66, $60, $25, $88, $66, $A0, $26, $47, $20, $4D, $81 + .db $B8, $84, $FF, $20, $ED, $DC, $B6, $76, $DC, $A0, $06, $8E, $B2, $C6, $C6 + .db $8F, $A5, $E2, $60, $F8, $21, $1E, $00, $1E, $33, $FB, $1D, $67, $63, $33 + .db $1D, $48, $42, $A9, $49, $3B, $D3, $96, $3E, $06, $C0, $B2, $30, $30, $FB + .db $BD, $6E, $60, $B0, $65, $8B, $41, $2E, $87, $6B, $4D, $A1, $8F, $04, $AE + .db $A2, $16, $49, $6C, $7B, $50, $DC, $36, $66, $2F, $3E, $80, $5C, $2F, $36 + .db $6E, $DE, $36, $7E, $DD, $A3, $F2, $8E, $3C, $BC, $9E, $84, $3C, $FF, $12 + .db $6C, $D8, $6C, $36, $21, $9F, $F4, $6C, $D8, $37, $11, $44, $55, $F7, $AA + .db $55, $F7, $DD, $77, $5F, $0F, $18, $D9, $2F, $F8, $58, $27, $1F, $0C, $36 + .db $F5, $F6, $36, $86, $C8, $60, $27, $47, $47, $D0, $F0, $F6, $06, $07, $FE + .db $44, $C2, $27, $06, $B7, $F6, $06, $C0, $23, $25, $68, $27, $0B, $46, $70 + .db $A7, $1B, $66, $4F, $F8, $38, $2E, $1F, $38, $25, $4F, $FF, $D0, $67, $EF + .db $FF, $06, $B0, $26, $47, $C0, $76, $47, $D2, $6F, $1F, $F0, $69, $EC, $37 + .db $26, $57, $30, $3F, $62, $40, $37, $3F, $30, $50, $4E, $F7, $A0, $47, $92 + .db $4F, $F7, $C0, $51, $47, $D0, $25, $04, $6F, $FF, $F0, $4F, $F7, $D0, $16 + .db $45, $22, $6F, $FF, $D0, $47, $A0, $77, $4F, $FF, $20, $67, $70, $60, $47 + .db $50, $46, $20, $67, $A1, $48, $6F, $1F, $E0, $6F, $3F, $30, $66, $EE, $FF + .db $65, $D2, $67, $A0, $67, $50, $8F, $EE, $1F, $0F, $FF, $64, $46, $4D, $26 + .db $0F, $F0, $F6, $EF, $0F, $65, $47, $C8, $86, $DE, $DE, $82, $1D, $A6, $EA + .db $30, $A1, $A4, $8B, $D8, $BC, $50, $ED, $CC, $95, $66, $62, $8E, $87, $A1 + .db $33, $0B, $6C, $FC, $86, $60, $FB, $3E, $62, $30, $18, $18, $30, $62, $A6 + .db $CD, $49, $CC, $BB, $AE, $70, $D1, $A1, $EC, $66, $57, $C0, $80, $8F, $67 + .db $E4, $2C, $89, $FE, $03, $A3, $CE, $FD, $45, $C0, $A4, $61, $22, $78, $07 + .db $19, $21, $00, $FE, $8D, $EE, $30, $40, $77, $52, $3C, $66, $61, $4F, $78 + .db $90, $1A, $A1, $7D, $AF, $7E, $B1, $22, $A9, $7C, $B7, $30, $49, $F6, $90 + .db $25, $B3, $1C, $30, $EC, $20, $B7, $30, $1C, $00, $60, $4F, $C6, $31, $04 + .db $EA, $87, $A1, $7B, $EC, $7E, $A5, $C2, $23, $8B, $A6, $91, $21, $60, $23 + .db $25, $7E, $97, $1E, $1A, $ED, $A0, $9F, $58, $78, $30, $A1, $86, $09, $7E + .db $D4, $67, $8E, $02, $E0, $67, $90, $8F, $78, $AA, $53, $07, $77, $87, $F6 + .db $F5, $60, $50, $34, $78, $38, $61, $6F, $D8, $74, $43, $5F, $F1, $70, $D8 + .db $AF, $F8, $95, $2D, $03, $FB, $EF, $00, $47, $00, $F0, $E8 + diff --git a/Source/HBIOS/font8x16u.asm b/Source/HBIOS/font8x16u.asm new file mode 100644 index 00000000..4fbc2e7a --- /dev/null +++ b/Source/HBIOS/font8x16u.asm @@ -0,0 +1,256 @@ + .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$7E,$81,$A5,$81,$81,$BD,$99,$81,$81,$7E,$00,$00,$00,$00 + .DB $00,$00,$7C,$FE,$FE,$D6,$FE,$FE,$BA,$C6,$FE,$7C,$00,$00,$00,$00 + .DB $00,$00,$00,$6C,$EE,$FE,$FE,$FE,$FE,$7C,$38,$10,$00,$00,$00,$00 + .DB $00,$00,$00,$10,$38,$7C,$FE,$7C,$38,$10,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$10,$38,$38,$10,$6C,$EE,$6C,$10,$38,$00,$00,$00,$00 + .DB $00,$00,$10,$38,$7C,$7C,$FE,$FE,$FE,$6C,$10,$38,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$18,$3C,$3C,$3C,$18,$00,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$FF,$E7,$C3,$C3,$C3,$E7,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$18,$3C,$66,$66,$66,$3C,$18,$00,$00,$00,$00,$00 + .DB $FF,$FF,$FF,$FF,$E7,$C3,$99,$99,$99,$C3,$E7,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$1E,$0E,$1E,$36,$78,$CC,$CC,$CC,$CC,$78,$00,$00,$00,$00 + .DB $00,$00,$3C,$66,$66,$66,$3C,$18,$7E,$18,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$1E,$1A,$1E,$18,$18,$18,$18,$78,$F8,$70,$00,$00,$00,$00 + .DB $00,$00,$3E,$36,$3E,$36,$36,$76,$F6,$66,$0E,$1E,$0C,$00,$00,$00 + .DB $00,$00,$18,$DB,$7E,$3C,$66,$66,$3C,$7E,$DB,$18,$00,$00,$00,$00 + .DB $00,$00,$00,$80,$E0,$F0,$FC,$FE,$FC,$F0,$E0,$80,$00,$00,$00,$00 + .DB $00,$00,$00,$02,$0E,$3E,$7E,$FE,$7E,$3E,$0E,$02,$00,$00,$00,$00 + .DB $00,$00,$18,$3C,$7E,$18,$18,$18,$18,$7E,$3C,$18,$00,$00,$00,$00 + .DB $00,$00,$66,$66,$66,$66,$66,$66,$66,$00,$66,$66,$00,$00,$00,$00 + .DB $00,$00,$7F,$DB,$DB,$DB,$DB,$7B,$1B,$1B,$1B,$1B,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$60,$7C,$F6,$DE,$7C,$0C,$C6,$C6,$7C,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$FE,$FE,$FE,$FE,$00,$00,$00,$00 + .DB $00,$00,$18,$3C,$7E,$18,$18,$18,$7E,$3C,$18,$7E,$00,$00,$00,$00 + .DB $00,$00,$18,$3C,$7E,$18,$18,$18,$18,$18,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$18,$18,$18,$18,$18,$18,$18,$7E,$3C,$18,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$0C,$0E,$FF,$0E,$0C,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$30,$70,$FE,$70,$30,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$C0,$C0,$C0,$FE,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$24,$66,$FF,$66,$24,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$10,$38,$38,$38,$7C,$7C,$FE,$FE,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$FE,$FE,$7C,$7C,$7C,$38,$38,$10,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$18,$3C,$3C,$3C,$3C,$18,$18,$00,$18,$18,$00,$00,$00,$00 + .DB $00,$36,$36,$36,$36,$14,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$6C,$6C,$6C,$FE,$6C,$6C,$FE,$6C,$6C,$6C,$00,$00,$00,$00 + .DB $00,$00,$18,$18,$7C,$C6,$C0,$78,$3C,$06,$C6,$7C,$18,$18,$00,$00 + .DB $00,$00,$00,$00,$00,$62,$66,$0C,$18,$30,$66,$C6,$00,$00,$00,$00 + .DB $00,$00,$38,$6C,$38,$30,$76,$7E,$CC,$CC,$CC,$76,$00,$00,$00,$00 + .DB $00,$0C,$0C,$0C,$18,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$0C,$18,$30,$30,$30,$30,$30,$30,$18,$0C,$00,$00,$00,$00 + .DB $00,$00,$30,$18,$0C,$0C,$0C,$0C,$0C,$0C,$18,$30,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$6C,$38,$FE,$38,$6C,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$18,$18,$7E,$18,$18,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$0C,$0C,$0C,$18,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$FE,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$02,$06,$0C,$18,$30,$60,$C0,$80,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$CE,$DE,$F6,$E6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$18,$78,$18,$18,$18,$18,$18,$18,$18,$7E,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$06,$0C,$18,$30,$60,$C6,$FE,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$06,$06,$3C,$06,$06,$06,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$0C,$1C,$3C,$6C,$CC,$CC,$FE,$0C,$0C,$1E,$00,$00,$00,$00 + .DB $00,$00,$FE,$C0,$C0,$C0,$FC,$06,$06,$06,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C0,$C0,$FC,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$FE,$C6,$06,$0C,$18,$30,$30,$30,$30,$30,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C6,$7C,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C6,$C6,$7E,$06,$06,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$0C,$0C,$00,$00,$0C,$0C,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$0C,$0C,$00,$00,$0C,$0C,$0C,$18,$00,$00,$00 + .DB $00,$00,$00,$0C,$18,$30,$60,$C0,$60,$30,$18,$0C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$FE,$00,$FE,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$60,$30,$18,$0C,$06,$0C,$18,$30,$60,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$0C,$18,$18,$18,$00,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C6,$DE,$DE,$DE,$DC,$C0,$7E,$00,$00,$00,$00 + .DB $00,$00,$38,$6C,$C6,$C6,$C6,$FE,$C6,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$FC,$66,$66,$66,$7C,$66,$66,$66,$66,$FC,$00,$00,$00,$00 + .DB $00,$00,$3C,$66,$C2,$C0,$C0,$C0,$C0,$C2,$66,$3C,$00,$00,$00,$00 + .DB $00,$00,$F8,$6C,$66,$66,$66,$66,$66,$66,$6C,$F8,$00,$00,$00,$00 + .DB $00,$00,$FE,$66,$60,$64,$7C,$64,$60,$60,$66,$FE,$00,$00,$00,$00 + .DB $00,$00,$FE,$66,$60,$64,$7C,$64,$60,$60,$60,$F0,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C0,$C0,$C0,$CE,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$C6,$C6,$FE,$C6,$C6,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$3C,$18,$18,$18,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$00,$3C,$18,$18,$18,$18,$18,$18,$D8,$D8,$70,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$CC,$D8,$F0,$F0,$D8,$CC,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$F0,$60,$60,$60,$60,$60,$60,$62,$66,$FE,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$EE,$EE,$FE,$D6,$D6,$D6,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$E6,$E6,$F6,$DE,$CE,$CE,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$FC,$66,$66,$66,$66,$7C,$60,$60,$60,$F0,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C6,$C6,$C6,$C6,$D6,$D6,$7C,$06,$00,$00,$00 + .DB $00,$00,$FC,$66,$66,$66,$7C,$78,$6C,$66,$66,$E6,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C0,$C0,$70,$1C,$06,$06,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$7E,$5A,$18,$18,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$6C,$38,$10,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$C6,$D6,$D6,$D6,$FE,$EE,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$C6,$C6,$C6,$6C,$38,$38,$6C,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$66,$66,$66,$66,$66,$3C,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$00,$FE,$C6,$86,$0C,$18,$30,$60,$C2,$C6,$FE,$00,$00,$00,$00 + .DB $00,$00,$7C,$60,$60,$60,$60,$60,$60,$60,$60,$7C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$80,$C0,$60,$30,$18,$0C,$06,$02,$00,$00,$00,$00 + .DB $00,$00,$7C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$0C,$7C,$00,$00,$00,$00 + .DB $00,$10,$38,$6C,$C6,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$00,$00 + .DB $00,$18,$18,$18,$0C,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$78,$0C,$7C,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$00,$E0,$60,$60,$7C,$66,$66,$66,$66,$66,$FC,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7C,$C6,$C0,$C0,$C0,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$1C,$0C,$0C,$7C,$CC,$CC,$CC,$CC,$CC,$7E,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7C,$C6,$C6,$FE,$C0,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$1C,$36,$30,$30,$FC,$30,$30,$30,$30,$78,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$76,$CE,$C6,$C6,$CE,$76,$06,$C6,$7C,$00,$00 + .DB $00,$00,$E0,$60,$60,$7C,$66,$66,$66,$66,$66,$E6,$00,$00,$00,$00 + .DB $00,$00,$18,$18,$00,$38,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$00,$0C,$0C,$00,$1C,$0C,$0C,$0C,$0C,$0C,$CC,$CC,$78,$00,$00 + .DB $00,$00,$E0,$60,$60,$66,$66,$6C,$78,$6C,$66,$E6,$00,$00,$00,$00 + .DB $00,$00,$18,$18,$18,$18,$18,$18,$18,$18,$18,$1C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$6C,$FE,$D6,$D6,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$DC,$66,$66,$66,$66,$66,$66,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7C,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$DC,$66,$66,$66,$66,$7C,$60,$60,$F0,$00,$00 + .DB $00,$00,$00,$00,$00,$76,$CC,$CC,$CC,$CC,$7C,$0C,$0C,$1E,$00,$00 + .DB $00,$00,$00,$00,$00,$DC,$66,$60,$60,$60,$60,$F0,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7C,$C6,$C0,$7C,$06,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$30,$30,$30,$FC,$30,$30,$30,$30,$36,$1C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$CC,$CC,$CC,$CC,$CC,$CC,$76,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$C6,$C6,$C6,$C6,$6C,$38,$10,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$C6,$C6,$D6,$D6,$D6,$FE,$6C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$C6,$C6,$6C,$38,$6C,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$C6,$C6,$C6,$C6,$CE,$76,$06,$C6,$7C,$00,$00 + .DB $00,$00,$00,$00,$00,$FE,$86,$0C,$18,$30,$62,$FE,$00,$00,$00,$00 + .DB $00,$00,$0E,$18,$18,$18,$70,$18,$18,$18,$18,$0E,$00,$00,$00,$00 + .DB $00,$00,$18,$18,$18,$18,$00,$18,$18,$18,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$70,$18,$18,$18,$0E,$18,$18,$18,$18,$70,$00,$00,$00,$00 + .DB $00,$00,$76,$DC,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$10,$38,$38,$6C,$6C,$FE,$00,$00,$00,$00,$00 + .DB $00,$00,$3C,$66,$C0,$C0,$C0,$C6,$66,$3C,$18,$0C,$CC,$38,$00,$00 + .DB $00,$00,$C6,$00,$00,$C6,$C6,$C6,$C6,$C6,$CE,$76,$00,$00,$00,$00 + .DB $00,$0C,$18,$30,$00,$7C,$C6,$C6,$FE,$C0,$C6,$7C,$00,$00,$00,$00 + .DB $00,$30,$78,$CC,$00,$78,$0C,$7C,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$00,$CC,$00,$00,$78,$0C,$7C,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$60,$30,$18,$00,$78,$0C,$7C,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$38,$6C,$38,$00,$78,$0C,$7C,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$7C,$C6,$C0,$C0,$C6,$7C,$18,$0C,$6C,$38,$00,$00 + .DB $00,$30,$78,$CC,$00,$7C,$C6,$C6,$FE,$C0,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$CC,$00,$00,$7C,$C6,$C6,$FE,$C0,$C6,$7C,$00,$00,$00,$00 + .DB $00,$30,$18,$0C,$00,$7C,$C6,$C6,$FE,$C0,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$66,$00,$00,$38,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$18,$3C,$66,$00,$38,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$30,$18,$0C,$00,$38,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$C6,$00,$38,$6C,$C6,$C6,$C6,$FE,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $38,$6C,$38,$00,$38,$6C,$C6,$C6,$FE,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $0C,$18,$30,$00,$FE,$60,$60,$7C,$60,$60,$60,$FE,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$66,$DB,$1B,$7F,$D8,$D8,$DF,$76,$00,$00,$00,$00 + .DB $00,$00,$7E,$D8,$D8,$D8,$D8,$FE,$D8,$D8,$D8,$DE,$00,$00,$00,$00 + .DB $00,$30,$78,$CC,$00,$7C,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$C6,$00,$00,$7C,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$30,$18,$0C,$00,$7C,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$30,$78,$CC,$00,$C6,$C6,$C6,$C6,$C6,$CE,$76,$00,$00,$00,$00 + .DB $00,$60,$30,$18,$00,$C6,$C6,$C6,$C6,$C6,$CE,$76,$00,$00,$00,$00 + .DB $00,$18,$00,$3C,$18,$18,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$C6,$00,$7C,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$C6,$00,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$18,$18,$7C,$C6,$C0,$C0,$C6,$7C,$18,$18,$00,$00,$00,$00 + .DB $00,$38,$6C,$60,$60,$F0,$60,$60,$60,$66,$F6,$6C,$00,$00,$00,$00 + .DB $00,$66,$66,$66,$66,$3C,$18,$7E,$18,$3C,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$3E,$63,$63,$30,$1C,$06,$63,$63,$3E,$00,$1C,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$3E,$63,$38,$0E,$63,$3E,$00,$1C,$00,$00,$00 + .DB $00,$0C,$18,$30,$00,$78,$0C,$7C,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$0C,$18,$30,$00,$38,$18,$18,$18,$18,$18,$3C,$00,$00,$00,$00 + .DB $00,$0C,$18,$30,$00,$7C,$C6,$C6,$C6,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$18,$30,$60,$00,$CC,$CC,$CC,$CC,$CC,$DC,$76,$00,$00,$00,$00 + .DB $00,$00,$76,$DC,$00,$DC,$66,$66,$66,$66,$66,$66,$00,$00,$00,$00 + .DB $00,$76,$DC,$00,$C6,$C6,$E6,$F6,$DE,$CE,$C6,$C6,$00,$00,$00,$00 + .DB $00,$21,$1E,$00,$1E,$33,$60,$60,$67,$63,$33,$1D,$00,$00,$00,$00 + .DB $00,$42,$3C,$00,$3B,$66,$66,$66,$3E,$06,$66,$3C,$00,$00,$00,$00 + .DB $00,$00,$30,$30,$00,$30,$30,$30,$60,$C6,$C6,$7C,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$7E,$60,$60,$60,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$7E,$06,$06,$06,$00,$00,$00,$00,$00 + .DB $00,$60,$60,$62,$66,$6C,$18,$30,$60,$DC,$36,$0C,$18,$3E,$00,$00 + .DB $00,$60,$60,$62,$66,$6C,$18,$36,$6E,$DE,$36,$7E,$06,$06,$00,$00 + .DB $00,$00,$18,$18,$00,$18,$18,$3C,$3C,$3C,$3C,$18,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$36,$6C,$D8,$6C,$36,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$D8,$6C,$36,$6C,$D8,$00,$00,$00,$00,$00,$00 + .DB $11,$44,$11,$44,$11,$44,$11,$44,$11,$44,$11,$44,$11,$44,$11,$44 + .DB $AA,$55,$AA,$55,$AA,$55,$AA,$55,$AA,$55,$AA,$55,$AA,$55,$AA,$55 + .DB $DD,$77,$DD,$77,$DD,$77,$DD,$77,$DD,$77,$DD,$77,$DD,$77,$DD,$77 + .DB $18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$18,$18,$F8,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$F8,$18,$F8,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $36,$36,$36,$36,$36,$36,$36,$F6,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $00,$00,$00,$00,$00,$00,$00,$FE,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $00,$00,$00,$00,$00,$F8,$18,$F8,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $36,$36,$36,$36,$36,$F6,$06,$F6,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $00,$00,$00,$00,$00,$FE,$06,$F6,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$F6,$06,$FE,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $36,$36,$36,$36,$36,$36,$36,$FE,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$F8,$18,$F8,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$F8,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$18,$18,$1F,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$18,$18,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$FF,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$18,$18,$1F,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$18,$18,$FF,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$1F,$18,$1F,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $36,$36,$36,$36,$36,$36,$36,$37,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$37,$30,$3F,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$3F,$30,$37,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$F7,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$FF,$00,$F7,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$37,$30,$37,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $00,$00,$00,$00,$00,$FF,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $36,$36,$36,$36,$36,$F7,$00,$F7,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $18,$18,$18,$18,$18,$FF,$00,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $36,$36,$36,$36,$36,$36,$36,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$FF,$00,$FF,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$FF,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$36,$36,$3F,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $18,$18,$18,$18,$18,$1F,$18,$1F,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$1F,$18,$1F,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $00,$00,$00,$00,$00,$00,$00,$3F,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $36,$36,$36,$36,$36,$36,$36,$FF,$36,$36,$36,$36,$36,$36,$36,$36 + .DB $18,$18,$18,$18,$18,$FF,$18,$FF,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$18,$18,$F8,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$1F,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .DB $F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0,$F0 + .DB $0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F,$0F + .DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$76,$DC,$D8,$D8,$D8,$D8,$DC,$76,$00,$00,$00,$00 + .DB $00,$00,$78,$CC,$CC,$D8,$FC,$C6,$C6,$C6,$C6,$CC,$00,$00,$00,$00 + .DB $00,$00,$FE,$66,$62,$60,$60,$60,$60,$60,$60,$60,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$FE,$6C,$6C,$6C,$6C,$6C,$6C,$00,$00,$00,$00 + .DB $00,$00,$FE,$C6,$62,$30,$18,$18,$30,$62,$C6,$FE,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7E,$D8,$CC,$CC,$CC,$D8,$70,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$66,$66,$66,$66,$66,$7C,$60,$C0,$80,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$76,$DC,$18,$18,$18,$18,$18,$00,$00,$00,$00 + .DB $00,$00,$FE,$38,$38,$6C,$C6,$C6,$6C,$38,$38,$FE,$00,$00,$00,$00 + .DB $00,$00,$00,$38,$6C,$C6,$C6,$FE,$C6,$C6,$6C,$38,$00,$00,$00,$00 + .DB $00,$00,$38,$6C,$C6,$C6,$C6,$C6,$6C,$6C,$6C,$EE,$00,$00,$00,$00 + .DB $00,$00,$3E,$60,$60,$3C,$66,$C6,$C6,$C6,$CC,$78,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7E,$DB,$DB,$DB,$7E,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$02,$06,$7C,$CE,$DE,$F6,$F6,$7C,$60,$C0,$00,$00,$00,$00 + .DB $00,$00,$00,$1C,$30,$60,$60,$7C,$60,$60,$30,$1C,$00,$00,$00,$00 + .DB $00,$00,$7C,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$C6,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$FE,$00,$00,$FE,$00,$00,$FE,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$18,$18,$7E,$18,$18,$00,$00,$7E,$00,$00,$00,$00 + .DB $00,$00,$30,$18,$0C,$06,$0C,$18,$30,$00,$00,$7E,$00,$00,$00,$00 + .DB $00,$00,$0C,$18,$30,$60,$30,$18,$0C,$00,$00,$7E,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$0C,$1E,$1A,$18,$18,$18,$18,$18,$18,$18,$18,$18 + .DB $18,$18,$18,$18,$18,$18,$18,$18,$18,$18,$58,$78,$30,$00,$00,$00 + .DB $00,$00,$00,$00,$18,$18,$00,$7E,$00,$18,$18,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$76,$DC,$00,$76,$DC,$00,$00,$00,$00,$00 + .DB $00,$00,$78,$CC,$CC,$78,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$18,$18,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$18,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$1F,$18,$18,$18,$18,$18,$D8,$D8,$78,$38,$18,$00,$00,$00 + .DB $00,$00,$D8,$6C,$6C,$6C,$6C,$6C,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$70,$D8,$18,$30,$60,$F8,$00,$00,$00,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$7E,$7E,$7E,$7E,$7E,$7E,$00,$00,$00,$00,$00 + .DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 diff --git a/Source/HBIOS/font8x8c.asm b/Source/HBIOS/font8x8c.asm new file mode 100644 index 00000000..b53b332d --- /dev/null +++ b/Source/HBIOS/font8x8c.asm @@ -0,0 +1,69 @@ + .db $0F, $00, $F1, $F8, $0C, $3C, $3C, $30, $21, $F0, $F0, $F0, $22, $F8, $20 + .db $01, $5C, $21, $F2, $F0, $F0, $05, $F2, $41, $D2, $F2, $FF, $FF, $F8, $20 + .db $70, $F8, $70, $20, $1F, $5F, $F8, $D8, $88, $00, $88, $D8, $F8, $00, $73 + .db $59, $18, $18, $20, $60, $90, $60, $D9, $59, $00, $50, $20, $20, $D8, $27 + .db $81, $18, $A8, $50, $50, $D8, $E2, $4A, $A8, $A8, $F1, $FC, $FC, $38, $10 + .db $30, $70, $F0, $70, $DF, $49, $00, $D3, $43, $CF, $09, $50, $00, $D4, $40 + .db $D8, $FC, $78, $A8, $A8, $68, $28, $28, $00, $44, $53, $20, $CF, $44, $60 + .db $43, $58, $41, $D0, $03, $43, $50, $42, $60, $FA, $20, $10, $18, $FC, $18 + .db $10, $F8, $60, $FC, $60, $07, $FF, $11, $18, $1D, $30, $78, $78, $30, $20 + .db $80, $FB, $D8, $D8, $50, $1B, $0E, $48, $48, $FC, $59, $32, $20, $78, $A0 + .db $78, $24, $F8, $17, $59, $C8, $D0, $20, $58, $98, $D8, $00, $6F, $48, $50 + .db $27, $69, $78, $E8, $6B, $40, $C5, $4B, $10, $81, $41, $48, $0A, $10, $28 + .db $20, $C0, $69, $A8, $E8, $51, $A8, $20, $80, $FD, $20, $F8, $20, $45, $D3 + .db $4F, $70, $93, $05, $61, $99, $50, $04, $08, $C6, $11, $40, $80, $10, $98 + .db $A8, $F8, $51, $C8, $70, $51, $42, $B7, $28, $F8, $08, $88, $3C, $33, $60 + .db $80, $59, $62, $70, $08, $88, $70, $00, $30, $50, $90, $F8, $A5, $3A, $00 + .db $F8, $80, $80, $F0, $8C, $30, $38, $40, $E9, $88, $53, $F8, $08, $86, $41 + .db $D0, $0A, $88, $EC, $22, $29, $78, $0E, $42, $A4, $02, $25, $CA, $52, $60 + .db $00, $9A, $72, $40, $20, $EF, $72, $FC, $00, $C0, $21, $42, $86, $42, $98 + .db $49, $30, $52, $21, $C0, $50, $B8, $B0, $A5, $69, $70, $58, $18, $88, $F8 + .db $88, $F0, $50, $00, $F0, $07, $E8, $70, $29, $F0, $08, $80, $48, $32, $88 + .db $70, $EA, $48, $E8, $F8, $E8, $E0, $2A, $F8, $C3, $29, $F0, $22, $0E, $4A + .db $B8, $88, $20, $44, $C8, $54, $F8, $20, $40, $11, $1C, $08, $F4, $22, $F8 + .db $2F, $90, $A0, $C0, $A0, $90, $09, $80, $42, $C8, $5A, $18, $88, $D8, $A8 + .db $88, $A0, $51, $88, $C8, $10, $52, $98, $88, $48, $EA, $88, $41, $33, $42 + .db $B0, $23, $20, $48, $32, $78, $04, $32, $A0, $90, $0F, $41, $56, $42, $18 + .db $F3, $20, $20, $42, $D1, $45, $90, $81, $E5, $23, $8C, $41, $B7, $29, $50 + .db $00, $9C, $E8, $50, $23, $01, $FF, $41, $58, $61, $A8, $41, $90, $12, $78 + .db $40, $48, $78, $0E, $EA, $80, $81, $FF, $B8, $0A, $08, $4A, $78, $18, $66 + .db $0A, $63, $EC, $3D, $08, $60, $60, $10, $28, $F0, $10, $52, $88, $70, $50 + .db $42, $6D, $02, $6A, $70, $E8, $42, $CB, $61, $A5, $02, $88, $30, $88, $F8 + .db $82, $F2, $FF, $49, $E0, $A5, $41, $CF, $FA, $38, $48, $48, $38, $08, $F0 + .db $B0, $C8, $41, $B4, $E8, $20, $29, $20, $01, $40, $94, $68, $18, $FF, $FB + .db $48, $30, $80, $80, $20, $5F, $04, $42, $90, $48, $50, $07, $43, $84, $45 + .db $D0, $63, $45, $02, $C0, $61, $8E, $41, $AF, $4B, $60, $B0, $2B, $08, $F1 + .db $80, $80, $50, $60, $80, $65, $6A, $60, $4E, $41, $90, $43, $C0, $08, $90 + .db $FC, $29, $68, $43, $0D, $23, $CF, $41, $00, $82, $A1, $E8, $48, $E9, $48 + .db $21, $5F, $4A, $40, $C8, $69, $F8, $FF, $8A, $F8, $68, $EB, $40, $00, $FE + .db $23, $01, $96, $02, $50, $00, $6C, $6D, $03, $F5, $F2, $70, $50, $F8, $70 + .db $00, $FC, $80, $BC, $A0, $AC, $A8, $8D, $FC, $F3, $E0, $1F, $FC, $04, $F4 + .db $14, $D4, $54, $F4, $1A, $12, $D4, $14, $F4, $04, $2A, $FF, $F3, $41, $D5 + .db $1F, $AC, $A0, $BC, $80, $FC, $A8, $F0, $4B, $AC, $C0, $41, $D9, $43, $C8 + .db $4E, $00, $B8, $0C, $80, $FF, $6E, $FC, $96, $0F, $04, $C0, $06, $46, $D1 + .db $23, $CA, $27, $3F, $41, $DC, $43, $C5, $63, $53, $07, $FC, $3B, $74, $20 + .db $40, $08, $6A, $10, $41, $6A, $20, $C8, $63, $68, $22, $E8, $88, $E9, $74 + .db $63, $50, $22, $0F, $8D, $C8, $48, $48, $7C, $76, $64, $43, $22, $CA, $62 + .db $A2, $09, $40, $46, $3B, $46, $14, $70, $88, $90, $ED, $30, $88, $1C, $AC + .db $21, $71, $58, $B8, $2A, $8C, $30, $E6, $9E, $19, $00, $14, $28, $50, $A0 + .db $50, $28, $14, $00, $DA, $02, $3C, $0F, $00, $54, $AA, $0D, $AA, $B0, $1B + .db $B6, $6C, $DA, $EF, $0F, $18, $2C, $0D, $F8, $02, $BF, $09, $6C, $29, $EC + .db $EC, $63, $CB, $24, $08, $FC, $75, $23, $0A, $0C, $CE, $06, $01, $44, $F0 + .db $0E, $EE, $23, $62, $C7, $74, $64, $64, $C1, $A1, $EE, $31, $01, $44, $04 + .db $A5, $E0, $18, $ED, $30, $6F, $30, $54, $26, $4E, $21, $23, $80, $26, $24 + .db $54, $23, $1D, $1F, $D8, $D8, $DC, $D8, $54, $DC, $C0, $A5, $3D, $08, $FC + .db $C0, $DC, $66, $55, $21, $C0, $22, $22, $4E, $85, $7F, $23, $80, $E9, $00 + .db $42, $91, $25, $A6, $EA, $29, $43, $87, $04, $00, $54, $26, $44, $79, $EA + .db $3C, $3F, $00, $3E, $30, $3E, $3D, $44, $7E, $44, $B9, $84, $F0, $86, $DF + .db $38, $43, $54, $05, $21, $8D, $21, $0F, $C0, $F0, $EF, $0C, $20, $04, $B1 + .db $00, $68, $FE, $A8, $82, $70, $E8, $B0, $FA, $3D, $F0, $40, $F0, $90, $80 + .db $80, $8A, $F8, $7F, $91, $48, $00, $EF, $B0, $EA, $40, $A2, $50, $EC, $7C + .db $8A, $00, $E2, $48, $61, $18, $58, $74, $98, $10, $10, $1C, $55, $F8, $2C + .db $10, $38, $44, $38, $10, $58, $30, $CC, $CC, $FC, $CC, $CC, $38, $00, $78 + .db $84, $84, $84, $48, $48, $84, $7B, $28, $40, $43, $28, $44, $61, $5A, $F9 + .db $0E, $6C, $92, $92, $82, $CF, $B3, $58, $68, $E2, $40, $30, $F8, $80, $42 + .db $26, $09, $CC, $FE, $41, $0A, $04, $40, $B4, $A9, $7C, $EE, $1A, $B3, $FE + .db $00, $61, $21, $CF, $A9, $10, $41, $22, $8E, $73, $18, $34, $5B, $65, $6E + .db $F1, $B0, $70, $AB, $FC, $1F, $12, $64, $98, $EB, $54, $00, $38, $9B, $01 + .db $4D, $38, $01, $24, $CE, $89, $0E, $7B, $9B, $0E, $28, $18, $08, $90, $A1 + .db $E0, $3D, $62, $12, $49, $3C, $85, $6F, $00, $E8, $05, $FF, $47, $00, $E8 diff --git a/Source/HBIOS/font8x8u.asm b/Source/HBIOS/font8x8u.asm new file mode 100644 index 00000000..686adaf8 --- /dev/null +++ b/Source/HBIOS/font8x8u.asm @@ -0,0 +1,258 @@ + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x00(0) + .DB 000h,000h,000h,03ch,03ch,030h,030h,030h ; 0x01(1) + .DB 000h,000h,000h,0f0h,0f0h,030h,030h,030h ; 0x02(2) + .DB 030h,030h,030h,03ch,03ch,000h,000h,000h ; 0x03(3) + .DB 030h,030h,030h,0f0h,0f0h,000h,000h,000h ; 0x04(4) + .DB 030h,030h,030h,030h,030h,030h,030h,030h ; 0x05(5) + .DB 000h,000h,000h,0ffh,0ffh,000h,000h,000h ; 0x06(6) + .DB 000h,020h,070h,0f8h,070h,020h,000h,000h ; 0x07(7) + .DB 0f8h,0d8h,088h,000h,088h,0d8h,0f8h,000h ; 0x08(8) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x09(9) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x0a(10) + .DB 018h,018h,020h,060h,090h,060h,000h,000h ; 0x0b(11) + .DB 020h,050h,020h,020h,070h,020h,000h,000h ; 0x0c(12) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x0d(13) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x0e(14) + .DB 0a8h,050h,050h,0d8h,050h,050h,0a8h,000h ; 0x0f(15) + .DB 030h,030h,030h,0fch,0fch,030h,030h,030h ; 0x10(16) + .DB 010h,030h,070h,0f0h,070h,030h,010h,000h ; 0x11(17) + .DB 020h,070h,020h,020h,020h,070h,020h,000h ; 0x12(18) + .DB 050h,050h,050h,050h,000h,050h,000h,000h ; 0x13(19) + .DB 078h,0a8h,0a8h,068h,028h,028h,000h,000h ; 0x14(20) + .DB 030h,030h,030h,0fch,0fch,000h,000h,000h ; 0x15(21) + .DB 000h,000h,000h,0fch,0fch,030h,030h,030h ; 0x16(22) + .DB 030h,030h,030h,0f0h,0f0h,030h,030h,030h ; 0x17(23) + .DB 020h,070h,020h,020h,020h,020h,020h,020h ; 0x18(24) + .DB 030h,030h,030h,03ch,03ch,030h,030h,030h ; 0x19(25) + .DB 000h,010h,018h,0fch,018h,010h,000h,000h ; 0x1a(26) + .DB 000h,020h,060h,0fch,060h,020h,000h,000h ; 0x1b(27) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1c(28) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1d(29) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1e(30) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x1f(31) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x20(32) + .DB 030h,078h,078h,030h,000h,030h,000h,000h ; 0x21(33) + .DB 0d8h,0d8h,050h,000h,000h,000h,000h,000h ; 0x22(34) + .DB 048h,048h,0fch,048h,048h,0fch,048h,048h ; 0x23(35) + .DB 020h,078h,0a0h,078h,024h,0f8h,020h,000h ; 0x24(36) + .DB 000h,0c8h,0d0h,020h,058h,098h,000h,000h ; 0x25(37) + .DB 030h,048h,048h,050h,060h,090h,078h,000h ; 0x26(38) + .DB 030h,030h,040h,000h,000h,000h,000h,000h ; 0x27(39) + .DB 010h,020h,020h,020h,020h,020h,010h,000h ; 0x28(40) + .DB 020h,010h,010h,010h,010h,010h,020h,000h ; 0x29(41) + .DB 020h,0a8h,070h,0f8h,070h,0a8h,020h,000h ; 0x2a(42) + .DB 000h,020h,020h,0f8h,020h,020h,000h,000h ; 0x2b(43) + .DB 000h,000h,000h,000h,000h,030h,030h,040h ; 0x2c(44) + .DB 000h,000h,000h,070h,000h,000h,000h,000h ; 0x2d(45) + .DB 000h,000h,000h,000h,000h,030h,030h,000h ; 0x2e(46) + .DB 004h,008h,010h,020h,040h,080h,000h,000h ; 0x2f(47) + .DB 070h,098h,0a8h,0a8h,0a8h,0c8h,070h,000h ; 0x30(48) + .DB 020h,060h,020h,020h,020h,020h,0f8h,000h ; 0x31(49) + .DB 070h,088h,008h,010h,060h,080h,0f8h,000h ; 0x32(50) + .DB 070h,088h,008h,070h,008h,088h,070h,000h ; 0x33(51) + .DB 030h,050h,090h,0f8h,010h,010h,010h,000h ; 0x34(52) + .DB 0f8h,080h,080h,0f0h,008h,088h,070h,000h ; 0x35(53) + .DB 038h,040h,080h,0f0h,088h,088h,070h,000h ; 0x36(54) + .DB 0f8h,008h,010h,020h,020h,020h,020h,000h ; 0x37(55) + .DB 070h,088h,088h,070h,088h,088h,070h,000h ; 0x38(56) + .DB 070h,088h,088h,078h,008h,088h,070h,000h ; 0x39(57) + .DB 000h,030h,030h,000h,030h,030h,000h,000h ; 0x3a(58) + .DB 000h,030h,030h,000h,030h,030h,060h,000h ; 0x3b(59) + .DB 010h,020h,040h,080h,040h,020h,010h,000h ; 0x3c(60) + .DB 000h,000h,0fch,000h,0fch,000h,000h,000h ; 0x3d(61) + .DB 040h,020h,010h,008h,010h,020h,040h,000h ; 0x3e(62) + .DB 070h,088h,008h,030h,020h,000h,020h,000h ; 0x3f(63) + .DB 070h,088h,0b8h,0b0h,080h,080h,070h,000h ; 0x40(64) + .DB 020h,050h,088h,0f8h,088h,088h,088h,000h ; 0x41(65) + .DB 0f0h,048h,048h,070h,048h,048h,0f0h,000h ; 0x42(66) + .DB 070h,088h,080h,080h,080h,088h,070h,000h ; 0x43(67) + .DB 0f0h,048h,048h,048h,048h,048h,0f0h,000h ; 0x44(68) + .DB 0f8h,088h,080h,0e0h,080h,088h,0f8h,000h ; 0x45(69) + .DB 0f8h,088h,080h,0f0h,080h,080h,080h,000h ; 0x46(70) + .DB 070h,088h,080h,0b8h,088h,088h,070h,000h ; 0x47(71) + .DB 088h,088h,088h,0f8h,088h,088h,088h,000h ; 0x48(72) + .DB 0f8h,020h,020h,020h,020h,020h,0f8h,000h ; 0x49(73) + .DB 01ch,008h,008h,008h,008h,088h,070h,000h ; 0x4a(74) + .DB 088h,090h,0a0h,0c0h,0a0h,090h,088h,000h ; 0x4b(75) + .DB 080h,080h,080h,080h,080h,088h,0f8h,000h ; 0x4c(76) + .DB 088h,0d8h,0a8h,088h,088h,088h,088h,000h ; 0x4d(77) + .DB 088h,0c8h,0a8h,0a8h,0a8h,098h,088h,000h ; 0x4e(78) + .DB 070h,088h,088h,088h,088h,088h,070h,000h ; 0x4f(79) + .DB 0f0h,088h,088h,0f0h,080h,080h,080h,000h ; 0x50(80) + .DB 070h,088h,088h,088h,0a8h,098h,078h,004h ; 0x51(81) + .DB 0f0h,088h,088h,0f0h,0a0h,090h,088h,000h ; 0x52(82) + .DB 070h,088h,040h,020h,010h,088h,070h,000h ; 0x53(83) + .DB 0f8h,020h,020h,020h,020h,020h,020h,000h ; 0x54(84) + .DB 088h,088h,088h,088h,088h,088h,070h,000h ; 0x55(85) + .DB 088h,088h,088h,050h,050h,050h,020h,000h ; 0x56(86) + .DB 088h,088h,088h,0a8h,0a8h,0a8h,050h,000h ; 0x57(87) + .DB 088h,088h,050h,020h,050h,088h,088h,000h ; 0x58(88) + .DB 088h,088h,050h,020h,020h,020h,020h,000h ; 0x59(89) + .DB 0f8h,088h,010h,020h,040h,088h,0f8h,000h ; 0x5a(90) + .DB 078h,040h,040h,040h,040h,040h,078h,000h ; 0x5b(91) + .DB 000h,080h,040h,020h,010h,008h,000h,000h ; 0x5c(92) + .DB 078h,008h,008h,008h,008h,008h,078h,000h ; 0x5d(93) + .DB 020h,050h,088h,000h,000h,000h,000h,000h ; 0x5e(94) + .DB 000h,000h,000h,000h,000h,000h,0fch,000h ; 0x5f(95) + .DB 060h,060h,010h,000h,000h,000h,000h,000h ; 0x60(96) + .DB 000h,000h,0f0h,008h,078h,088h,070h,000h ; 0x61(97) + .DB 080h,080h,080h,0f0h,088h,088h,0f0h,000h ; 0x62(98) + .DB 000h,000h,000h,070h,080h,080h,070h,000h ; 0x63(99) + .DB 008h,008h,008h,078h,088h,088h,078h,000h ; 0x64(100) + .DB 000h,000h,070h,088h,0f8h,080h,070h,000h ; 0x65(101) + .DB 000h,030h,048h,0e0h,040h,040h,040h,000h ; 0x66(102) + .DB 000h,000h,038h,048h,048h,038h,008h,070h ; 0x67(103) + .DB 000h,080h,080h,0b0h,0c8h,088h,088h,000h ; 0x68(104) + .DB 000h,000h,020h,000h,060h,020h,070h,000h ; 0x69(105) + .DB 000h,008h,000h,018h,008h,008h,048h,030h ; 0x6a(106) + .DB 080h,080h,090h,0a0h,0c0h,0a0h,090h,000h ; 0x6b(107) + .DB 020h,020h,020h,020h,020h,020h,020h,000h ; 0x6c(108) + .DB 000h,000h,000h,050h,0a8h,0a8h,088h,000h ; 0x6d(109) + .DB 000h,000h,000h,0b0h,0c8h,088h,088h,000h ; 0x6e(110) + .DB 000h,000h,000h,070h,088h,088h,070h,000h ; 0x6f(111) + .DB 000h,000h,070h,048h,048h,070h,040h,040h ; 0x70(112) + .DB 000h,060h,038h,048h,048h,038h,008h,008h ; 0x71(113) + .DB 000h,000h,000h,0b0h,0c8h,080h,080h,000h ; 0x72(114) + .DB 000h,000h,060h,080h,060h,010h,060h,000h ; 0x73(115) + .DB 000h,000h,040h,0e0h,040h,040h,020h,000h ; 0x74(116) + .DB 000h,000h,000h,090h,090h,090h,068h,000h ; 0x75(117) + .DB 000h,000h,000h,088h,088h,050h,020h,000h ; 0x76(118) + .DB 000h,000h,000h,088h,0a8h,0a8h,050h,000h ; 0x77(119) + .DB 000h,000h,000h,048h,030h,030h,048h,000h ; 0x78(120) + .DB 000h,000h,088h,050h,020h,040h,080h,000h ; 0x79(121) + .DB 000h,000h,0f8h,010h,020h,040h,0f8h,000h ; 0x7a(122) + .DB 010h,020h,020h,040h,020h,020h,010h,000h ; 0x7b(123) + .DB 020h,020h,020h,000h,020h,020h,020h,000h ; 0x7c(124) + .DB 040h,020h,020h,010h,020h,020h,040h,000h ; 0x7d(125) + .DB 06ch,090h,000h,000h,000h,000h,000h,000h ; 0x7e(126) + .DB 070h,050h,050h,050h,050h,050h,070h,000h ; 0x7f(127) + .DB 0fch,080h,0bch,0a0h,0ach,0a8h,0a8h,0a8h ; 0x80(128) + .DB 0fch,000h,0fch,000h,0fch,000h,000h,000h ; 0x81(129) + .DB 0fch,004h,0f4h,014h,0d4h,054h,054h,054h ; 0x82(130) + .DB 054h,054h,054h,054h,054h,054h,054h,054h ; 0x83(131) + .DB 054h,054h,054h,0d4h,014h,0f4h,004h,0fch ; 0x84(132) + .DB 000h,000h,000h,0ffh,000h,0ffh,000h,0ffh ; 0x85(133) + .DB 0a8h,0a8h,0a8h,0ach,0a0h,0bch,080h,0fch ; 0x86(134) + .DB 0a8h,0a8h,0a8h,0a8h,0a8h,0a8h,0a8h,0a8h ; 0x87(135) + .DB 0a8h,0a8h,0ach,0a0h,0ach,0a8h,0a8h,0a8h ; 0x88(136) + .DB 054h,054h,0d4h,014h,0d4h,054h,054h,054h ; 0x89(137) + .DB 000h,000h,0fch,000h,0fch,000h,000h,000h ; 0x8a(138) + .DB 0fch,080h,080h,080h,080h,080h,080h,080h ; 0x8b(139) + .DB 0fch,000h,000h,000h,000h,000h,000h,000h ; 0x8c(140) + .DB 0fch,004h,004h,004h,004h,004h,004h,004h ; 0x8d(141) + .DB 004h,004h,004h,004h,004h,004h,004h,004h ; 0x8e(142) + .DB 004h,004h,004h,004h,004h,004h,004h,0fch ; 0x8f(143) + .DB 000h,000h,000h,000h,000h,000h,000h,0fch ; 0x90(144) + .DB 080h,080h,080h,080h,080h,080h,080h,0fch ; 0x91(145) + .DB 080h,080h,080h,080h,080h,080h,080h,080h ; 0x92(146) + .DB 080h,080h,080h,0fch,080h,080h,080h,080h ; 0x93(147) + .DB 004h,004h,004h,0fch,004h,004h,004h,004h ; 0x94(148) + .DB 000h,000h,000h,0fch,000h,000h,000h,000h ; 0x95(149) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x96(150) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x97(151) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x98(152) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x99(153) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9a(154) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9b(155) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9c(156) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9d(157) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9e(158) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0x9f(159) + .DB 020h,040h,0f0h,008h,078h,088h,070h,000h ; 0xa0(160) + .DB 010h,020h,000h,060h,020h,020h,0f8h,000h ; 0xa1(161) + .DB 010h,020h,000h,070h,088h,088h,070h,000h ; 0xa2(162) + .DB 010h,020h,000h,088h,088h,088h,074h,000h ; 0xa3(163) + .DB 010h,020h,000h,0b0h,0c8h,088h,088h,000h ; 0xa4(164) + .DB 010h,020h,000h,0c8h,0a8h,098h,088h,000h ; 0xa5(165) + .DB 070h,088h,088h,07ch,000h,0fch,000h,000h ; 0xa6(166) + .DB 070h,088h,088h,070h,000h,0fch,000h,000h ; 0xa7(167) + .DB 020h,000h,020h,020h,040h,088h,070h,000h ; 0xa8(168) + .DB 000h,000h,000h,000h,0fch,080h,080h,080h ; 0xa9(169) + .DB 000h,000h,000h,000h,0fch,004h,004h,004h ; 0xaa(170) + .DB 088h,090h,0a8h,054h,088h,01ch,000h,000h ; 0xab(171) + .DB 088h,090h,0a8h,058h,0b8h,008h,000h,000h ; 0xac(172) + .DB 030h,000h,030h,078h,078h,030h,000h,000h ; 0xad(173) + .DB 014h,028h,050h,0a0h,050h,028h,014h,000h ; 0xae(174) + .DB 0a0h,050h,028h,014h,028h,050h,0a0h,000h ; 0xaf(175) + .DB 054h,0aah,054h,0aah,054h,0aah,054h,0aah ; 0xb0(176) + .DB 0aah,054h,0aah,054h,0aah,054h,0aah,054h ; 0xb1(177) + .DB 0b6h,06ch,0dah,0b6h,06ch,0dah,0b6h,06ch ; 0xb2(178) + .DB 018h,018h,018h,018h,018h,018h,018h,018h ; 0xb3(179) + .DB 018h,018h,018h,018h,0f8h,018h,018h,018h ; 0xb4(180) + .DB 018h,018h,018h,0f8h,018h,0f8h,018h,018h ; 0xb5(181) + .DB 06ch,06ch,06ch,06ch,0ech,06ch,06ch,06ch ; 0xb6(182) + .DB 000h,000h,000h,000h,0fch,06ch,06ch,06ch ; 0xb7(183) + .DB 000h,000h,000h,0fch,06ch,0ech,06ch,06ch ; 0xb8(184) + .DB 06ch,06ch,0ech,00ch,0ech,06ch,06ch,06ch ; 0xb9(185) + .DB 06ch,06ch,06ch,06ch,06ch,06ch,06ch,06ch ; 0xba(186) + .DB 000h,000h,0fch,00eh,0eeh,06ch,06ch,06ch ; 0xbb(187) + .DB 06ch,06ch,0ech,00ch,0fch,000h,000h,000h ; 0xbc(188) + .DB 064h,064h,0fch,000h,000h,000h,000h,000h ; 0xbd(189) + .DB 030h,030h,0f0h,030h,030h,0f0h,000h,000h ; 0xbe(190) + .DB 000h,000h,000h,000h,0f0h,030h,030h,030h ; 0xbf(191) + .DB 030h,030h,030h,030h,03ch,000h,000h,000h ; 0xc0(192) + .DB 030h,030h,030h,030h,0fch,000h,000h,000h ; 0xc1(193) + .DB 000h,000h,000h,000h,0fch,030h,030h,030h ; 0xc2(194) + .DB 030h,030h,030h,030h,03ch,030h,030h,030h ; 0xc3(195) + .DB 000h,000h,000h,000h,0fch,000h,000h,000h ; 0xc4(196) + .DB 030h,030h,030h,030h,0fch,030h,030h,030h ; 0xc5(197) + .DB 030h,030h,03ch,030h,03ch,030h,030h,030h ; 0xc6(198) + .DB 0d8h,0d8h,0dch,0d8h,0d8h,0d8h,0d8h,0d8h ; 0xc7(199) + .DB 0d8h,0d8h,0d8h,0dch,0c0h,0fch,000h,000h ; 0xc8(200) + .DB 000h,000h,000h,0fch,0c0h,0dch,0d8h,0d8h ; 0xc9(201) + .DB 0d8h,0d8h,0d8h,0dch,0c0h,000h,0fch,000h ; 0xca(202) + .DB 000h,000h,000h,000h,000h,000h,0fch,000h ; 0xcb(203) + .DB 0d8h,0d8h,0d8h,0dch,0c0h,0dch,0d8h,0d8h ; 0xcc(204) + .DB 000h,000h,000h,0fch,000h,0fch,000h,000h ; 0xcd(205) + .DB 0d8h,0d8h,0d8h,0dch,000h,0dch,0d8h,0d8h ; 0xce(206) + .DB 030h,030h,030h,0fch,000h,000h,0fch,000h ; 0xcf(207) + .DB 0d8h,0d8h,0d8h,0fch,000h,000h,000h,000h ; 0xd0(208) + .DB 000h,000h,0fch,000h,000h,0fch,030h,030h ; 0xd1(209) + .DB 000h,000h,000h,000h,000h,0fch,0d8h,0d8h ; 0xd2(210) + .DB 0d8h,0d8h,0d8h,0fch,000h,000h,000h,000h ; 0xd3(211) + .DB 030h,030h,030h,03ch,030h,030h,03ch,000h ; 0xd4(212) + .DB 000h,000h,000h,03eh,030h,03eh,030h,030h ; 0xd5(213) + .DB 000h,000h,000h,000h,000h,0fch,0d8h,0d8h ; 0xd6(214) + .DB 0d8h,0d8h,0d8h,0d8h,0dch,0d8h,0d8h,0d8h ; 0xd7(215) + .DB 030h,030h,0fch,000h,000h,0fch,030h,030h ; 0xd8(216) + .DB 030h,030h,030h,0f0h,000h,000h,000h,000h ; 0xd9(217) + .DB 000h,000h,000h,03ch,030h,030h,030h,030h ; 0xda(218) + .DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xdb(219) + .DB 000h,000h,000h,0fch,0fch,0fch,0c0h,0c0h ; 0xdc(220) + .DB 0c0h,0c0h,0c0h,0c0h,0c0h,0c0h,0c0h,0c0h ; 0xdd(221) + .DB 00ch,00ch,00ch,00ch,00ch,00ch,00ch,00ch ; 0xde(222) + .DB 00ch,00ch,00ch,00ch,0fch,0fch,0fch,000h ; 0xdf(223) + .DB 000h,000h,000h,068h,090h,090h,068h,000h ; 0xe0(224) + .DB 070h,088h,088h,0b0h,088h,088h,0f0h,040h ; 0xe1(225) + .DB 0f0h,090h,080h,080h,080h,080h,080h,000h ; 0xe2(226) + .DB 0f8h,050h,050h,050h,050h,048h,000h,000h ; 0xe3(227) + .DB 0f8h,088h,040h,020h,040h,088h,0f8h,000h ; 0xe4(228) + .DB 000h,000h,000h,07ch,088h,088h,070h,000h ; 0xe5(229) + .DB 000h,000h,000h,088h,088h,088h,070h,080h ; 0xe6(230) + .DB 000h,000h,074h,098h,010h,010h,01ch,000h ; 0xe7(231) + .DB 0fch,010h,038h,044h,038h,010h,0fch,000h ; 0xe8(232) + .DB 030h,0cch,0cch,0fch,0cch,0cch,038h,000h ; 0xe9(233) + .DB 078h,084h,084h,084h,048h,048h,084h,000h ; 0xea(234) + .DB 03ch,040h,038h,044h,044h,044h,038h,000h ; 0xeb(235) + .DB 000h,000h,06ch,092h,092h,06ch,000h,000h ; 0xec(236) + .DB 000h,000h,000h,038h,058h,068h,070h,000h ; 0xed(237) + .DB 038h,040h,080h,0f8h,080h,040h,038h,000h ; 0xee(238) + .DB 000h,000h,030h,0cch,0cch,0cch,0cch,000h ; 0xef(239) + .DB 0fch,000h,000h,0fch,000h,000h,0fch,000h ; 0xf0(240) + .DB 010h,010h,07ch,010h,010h,000h,0feh,000h ; 0xf1(241) + .DB 020h,010h,008h,010h,020h,000h,0feh,000h ; 0xf2(242) + .DB 010h,020h,040h,020h,010h,000h,0feh,000h ; 0xf3(243) + .DB 018h,034h,030h,030h,030h,030h,030h,030h ; 0xf4(244) + .DB 030h,030h,030h,030h,030h,030h,0b0h,070h ; 0xf5(245) + .DB 030h,030h,000h,0fch,000h,030h,030h,000h ; 0xf6(246) + .DB 000h,064h,098h,000h,064h,098h,000h,000h ; 0xf7(247) + .DB 038h,044h,044h,038h,000h,000h,000h,000h ; 0xf8(248) + .DB 000h,038h,038h,000h,000h,000h,000h,000h ; 0xf9(249) + .DB 000h,000h,038h,000h,000h,000h,000h,000h ; 0xfa(250) + .DB 00eh,008h,008h,048h,028h,018h,008h,000h ; 0xfb(251) + .DB 000h,000h,000h,0b0h,048h,048h,048h,000h ; 0xfc(252) + .DB 000h,000h,0f0h,03ch,040h,080h,0f8h,000h ; 0xfd(253) + .DB 0fch,0fch,0fch,0fch,0fch,0fch,0fch,0fch ; 0xfe(254) + .DB 000h,000h,000h,000h,000h,000h,000h,000h ; 0xff(255) + + diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 294cacaf..c701203b 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -54,6 +54,7 @@ ; - config/_.asm ; - cfg_.asm ; - .asm +; - .asm ; - util.asm ; - time.asm ; - bcd.asm @@ -61,6 +62,7 @@ ; - encode.asm ; - [xio|mio].asm ; - dsky.asm +; - unlzsa2s.asm ; ; ; INCLUDE GENERIC STUFF @@ -2862,7 +2864,11 @@ VGA_FONT: #IF (CVDUENABLE) CVDU_FONT: #ENDIF - #INCLUDE "font8x16.asm" + #IF USEZLSA2 + #INCLUDE "font8x16c.asm" + #ELSE + #INCLUDE "font8x16u.asm" + #ENDIF .ECHO "8X16 " #ENDIF ; @@ -2871,7 +2877,11 @@ CVDU_FONT: #IF (VGAENABLE) #IF (VGASIZ=V80X43)) VGA_FONT: - #INCLUDE "font8X11.asm" + #IF USEZLSA2 + #INCLUDE "font8x11c.asm" + #ELSE + #INCLUDE "font8x11u.asm" + #ENDIF .ECHO "8X11 " #ENDIF #ENDIF @@ -2885,7 +2895,11 @@ VGA_FONT: #IF (TMSENABLE) TMS_FONT: #ENDIF - #INCLUDE "font_8x8.asm" + #IF USEZLSA2 + #INCLUDE "font8x8c.asm" + #ELSE + #INCLUDE "font8x8u.asm" + #ENDIF .ECHO "8X8 " #ENDIF ; @@ -3064,6 +3078,12 @@ SIZ_CTC .EQU $ - ORG_CTC #IF (DSKYENABLE) #DEFINE DSKY_KBD #INCLUDE "dsky.asm" +; +; INCLUDE ZLSA2 decompression engine if required. +; +#ENDIF +#IF ((VGAENABLE | CVDUENABLE | TMSENABLE) & USEZLSA2) +#INCLUDE "unlzsa2s.asm" #ENDIF ; ; DETECT CPU SPEED USING DS-1302 RTC diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 8e239868..22020757 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -287,6 +287,10 @@ V80X24B .EQU 4 ; ECB-VDU V80X43 .EQU 5 ; ECB-VGA3 V80X60 .EQU 6 ; ECB-VGA3 ; +; FONTS +; +USEZLSA2 .EQU FALSE ; USE COMPRESSED FONTS. +; ; KEYBOARD LAYOUTS ; KBD_US .EQU 0 ; US ENGLISH diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index abe3accf..cdd9c626 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -366,9 +366,24 @@ TMS_LOADFONT: ; SET WRITE ADDRESS TO $800 LD HL,$800 CALL TMS_WR + +#IF USEZLSA2 + LD (TMS_STACK),SP ; SAVE STACK + LD HL,(TMS_STACK) ; AND SHIFT IT + LD DE,$2000 ; DOWN 4KB TO + CCF ; CREATE A + SBC HL,DE ; DECOMPRESSION BUFFER + LD SP,HL ; HL POINTS TO BUFFER + EX DE,HL ; START OF STACK BUFFER + PUSH DE ; SAVE IT + LD HL,TMS_FONT ; START OF FONT DATA + CALL DLZSA2 ; DECOMPRESS TO DE + POP HL ; RECALL STACK BUFFER POSITION +#ELSE + LD HL,TMS_FONT ; START OF FONT DATA +#ENDIF ; ; FILL $800 BYTES FROM FONTDATA - LD HL,TMS_FONT LD DE,$800 TMS_LOADFONT1: LD A,(HL) @@ -380,7 +395,14 @@ TMS_LOADFONT1: OR E JR NZ,TMS_LOADFONT1 ; +#IF USEZLSA2 + LD HL,(TMS_STACK) ; ERASE DECOMPRESS BUFFER + LD SP,HL ; BY RESTORING THE STACK + RET ; DONE +TMS_STACK .DW 0 +#ELSE RET +#ENDIF ; ;---------------------------------------------------------------------- ; VIRTUAL CURSOR MANAGEMENT diff --git a/Source/HBIOS/unlzsa2s.asm b/Source/HBIOS/unlzsa2s.asm new file mode 100644 index 00000000..327cfa91 --- /dev/null +++ b/Source/HBIOS/unlzsa2s.asm @@ -0,0 +1,183 @@ +; +; Size-optimized LZSA2 decompressor by spke & uniabis (139 bytes) +; +; ver.00 by spke for LZSA 1.0.0 (02-09/06/2019, 145 bytes); +; ver.01 by spke for LZSA 1.0.5 (24/07/2019, added support for backward decompression); +; ver.02 by uniabis (30/07/2019, 144(-1) bytes, +3.3% speed and support for Hitachi HD64180); +; ver.03 by spke for LZSA 1.0.7 (01/08/2019, 140(-4) bytes, -1.4% speed and small re-organization of macros); +; ver.04 by spke for LZSA 1.1.0 (26/09/2019, removed usage of IY, added full revision history) +; ver.05 by spke for LZSA 1.1.1 (11/10/2019, 139(-1) bytes, +0.1% speed) +; ver.051 by PSummers (14/1/2020), ROMWBW version. +; +; The data must be compressed using the command line compressor by Emmanuel Marty +; The compression is done as follows: +; +; lzsa.exe -f2 -r +; +; where option -r asks for the generation of raw (frame-less) data. +; +; The decompression is done in the standard way: +; +; ld hl,FirstByteOfCompressedData +; ld de,FirstByteOfMemoryForDecompressedData +; call DecompressLZSA2 +; +; Backward compression is also supported; you can compress files backward using: +; +; lzsa.exe -f2 -r -b +; +; and decompress the resulting files using: +; +; ld hl,LastByteOfCompressedData +; ld de,LastByteOfMemoryForDecompressedData +; call DecompressLZSA2 +; +; (do not forget to uncomment the BACKWARD_DECOMPRESS option in the decompressor). +; +; Of course, LZSA2 compression algorithms are (c) 2019 Emmanuel Marty, +; see https://github.com/emmanuel-marty/lzsa for more information +; +; Drop me an email if you have any comments/ideas/suggestions: zxintrospec@gmail.com +; +; This software is provided 'as-is', without any express or implied +; warranty. In no event will the authors be held liable for any damages +; arising from the use of this software. +; +; Permission is granted to anyone to use this software for any purpose, +; including commercial applications, and to alter it and redistribute it +; freely, subject to the following restrictions: +; +; 1. The origin of this software must not be misrepresented; you must not +; claim that you wrote the original software. If you use this software +; in a product, an acknowledgment in the product documentation would be +; appreciated but is not required. +; 2. Altered source versions must be plainly marked as such, and must not be +; misrepresented as being the original software. +; 3. This notice may not be removed or altered from any source distribution. +; + +; DEFINE BACKWARD_DECOMPRESS ; uncomment for data compressed with option -b +; DEFINE HD64180 ; uncomment for systems using Hitachi HD64180 + + #IFNDEF BACKWARD_DECOMPRESS + + #DEFINE NEXT_HL \ + #DEFCONT \ inc hl + + #DEFINE ADD_OFFSET \ + #DEFCONT \ ex de,hl \ add hl,de + + #DEFINE BLOCKCOPY \ + #DEFCONT \ ldir + + #ELSE + + #DEFINE NEXT_HL \ + #DEFCONT \ dec hl + + #DEFINE ADD_OFFSET \ + #DEFCONT \ push hl \ or a \ sbc hl,de \ pop de + + #DEFINE BLOCKCOPY \ + #DEFCONT \ lddr + + #ENDIF + + #IFDEF HD64180 + + .ECHO "HD64180 " + + #DEFINE LD_IX_DE \ + #DEFCONT \ ld ixl,e \ ld ixh,d + + #DEFINE LD_DE_IX \ + #DEFCONT \ ld e,ixl \ ld d,ixh + + #ELSE + + .ECHO "Z80 " + + #DEFINE LD_IX_DE \ + #DEFCONT \ push de \ pop ix + + #DEFINE LD_DE_IX \ + #DEFCONT \ push ix \ pop de + + #ENDIF + +DLZSA2: + xor a \ ld b,a \ ex af,af' \ jr ReadToken + +CASE00x: call ReadNibble + ld e,a \ ld a,c + cp %00100000 \ rl e \ jr SaveOffset + +CASE0xx ld d,$FF \ cp %01000000 \ jr c,CASE00x + +CASE01x: cp %01100000 \ rl d + +OffsetReadE: ld e,(hl) \ NEXT_HL + +SaveOffset: LD_IX_DE + +MatchLen: and %00000111 \ add a,2 \ cp 9 \ call z,ExtendedCode + +CopyMatch: ld c,a + ex (sp),hl ; BC = len, DE = -offset, HL = dest, SP -> [src] + ADD_OFFSET ; BC = len, DE = dest, HL = dest+(-offset), SP -> [src] + BLOCKCOPY ; BC = 0, DE = dest + pop hl ; HL = src + +ReadToken: ld a,(hl) \ NEXT_HL \ push af + and %00011000 \ jr z,NoLiterals + + rrca \ rrca \ rrca + call pe,ExtendedCode + + ld c,a + BLOCKCOPY + +NoLiterals: pop af \ push de + or a \ jp p,CASE0xx + +CASE1xx: cp %11000000 \ jr nc,CASE11x + +CASE10x: call ReadNibble + ld d,a \ ld a,c + cp %10100000 ;: rl d + dec d \ rl d \ .DB $CA ; jr OffsetReadE ; #CA is JP Z,.. to skip all commands in CASE110 before jr OffsetReadE + +CASE110: ld d,(hl) \ NEXT_HL \ jr OffsetReadE + +CASE11x: cp %11100000 \ jr c,CASE110 + +CASE111: LD_DE_IX \ jr MatchLen + +ExtendedCode: call ReadNibble \ inc a \ jr z,ExtraByte + sub $F0+1 \ add a,c \ ret +ExtraByte ld a,15 \ add a,c \ add a,(hl) \ NEXT_HL \ ret nc + ld a,(hl) \ NEXT_HL + ld b,(hl) \ NEXT_HL \ ret nz + pop de \ pop de ; RET is not needed, because RET from ReadNibble is sufficient + +ReadNibble: ld c,a \ xor a \ ex af,af' \ ret m +UpdateNibble ld a,(hl) \ or $F0 \ ex af,af' + ld a,(hl) \ NEXT_HL \ or $0F + rrca \ rrca \ rrca \ rrca \ ret + + + + + + + + + + + + + + + + + diff --git a/Source/HBIOS/vga.asm b/Source/HBIOS/vga.asm index 14c510c4..f5da706c 100644 --- a/Source/HBIOS/vga.asm +++ b/Source/HBIOS/vga.asm @@ -33,6 +33,8 @@ VGA_CSTY .EQU VGA_BLOK ; DEFAULT CURSOR STYLE VGA_BLNK .EQU VGA_NOBL ; DEFAULT BLINK RATE VGA_9BIT .EQU $0101 ; 9 BIT MSK-CFG VGA_8BIT .EQU $0000 ; 8 BIT MSK-CFG + +VGA_NICE .EQU FALSE ; TRUE = SLOW BUT PRETTY ; #IF (VGASIZ=V80X25) VGA_ROWS .EQU 25 @@ -502,13 +504,29 @@ VGA_CRTCDUMP1: ;---------------------------------------------------------------------- ; LOAD FONT DATA ;---------------------------------------------------------------------- + ; VGA_LOADFONT: LD HL,$7000 | VGA_89BIT ; CLEAR FONT PAGE NUM CALL VGA_SETCFG - LD DE,$7000 ; PAGE 7 OF VIDEO RAM +#IF USEZLSA2 + LD (VGA_STACK),SP ; SAVE STACK + LD HL,(VGA_STACK) ; AND SHIFT IT + LD DE,$2000 ; DOWN 4KB TO + CCF ; CREATE A + SBC HL,DE ; DECOMPRESSION BUFFER + LD SP,HL ; HL POINTS TO BUFFER + EX DE,HL ; START OF STACK BUFFER + PUSH DE ; SAVE IT + LD HL,VGA_FONT ; START OF FONT DATA + CALL DLZSA2 ; DECOMPRESS TO DE + POP HL ; RECALL STACK BUFFER POSITION +#ELSE LD HL,VGA_FONT ; START OF FONT DATA +#ENDIF + + LD DE,$7000 ; PAGE 7 OF VIDEO RAM VGA_LOADFONT1: LD B,VGA_SCANL ; # BYTES FOR EACH CHAR VGA_LOADFONT2: @@ -528,7 +546,15 @@ VGA_LOADFONT2: JR NZ,VGA_LOADFONT1 ; LOOP LD HL,$7070 | VGA_89BIT ; SET FONT PAGE NUM TO 7 CALL VGA_SETCFG + +#IF USEZLSA2 + LD HL,(VGA_STACK) ; ERASE DECOMPRESS BUFFER + LD SP,HL ; BY RESTORING THE STACK RET ; DONE +VGA_STACK .DW 0 +#ELSE + RET +#ENDIF ; ;---------------------------------------------------------------------- ; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E @@ -581,7 +607,9 @@ VGA_PUTCHAR: LD A,(VGA_ATTR) ; ATTRIBUTE LD L,A ; ... TO L ; WRITE CHAR & ATTR - ;CALL VGA_WAITSB ; WAIT FOR RETRACE +#IF (VGA_NICE) + CALL VGA_WAITSB ; WAIT FOR RETRACE +#ENDIF CALL VGA_MEMWRX ; UPDATE CURRENT POSITION LD HL,(VGA_POS) ; GET CURSOR POSITION @@ -628,7 +656,9 @@ VGA_FILL1: DEC C ; C := VGA ADDR LO OUT (C),L ; UDPATE LO ADDR INC C ; POINT TO DATA REG - ;CALL VGA_WAITSB ; WAIT FOR RETRACE +#IF (VGA_NICE) + CALL VGA_WAITSB ; WAIT FOR RETRACE +#ENDIF LD A,(VGA_ATTR) ; GET CUR ATTR OUT (C),A ; OUTPUT ATTR @@ -792,7 +822,9 @@ VGA_BLKCPY: EX DE,HL ; SWAP BACK VGA_BLKCPY1: - ;CALL VGA_WAITSB ; WAIT FOR RETRACE +#IF (VGA_NICE) + CALL VGA_WAITSB ; WAIT FOR RETRACE +#ENDIF ; GET NEXT SOURCE BYTE LD C,VGA_HI ; C := VGA_HI