From d8d7f53d1b2187d2ba44a00d7002e49a592b8da2 Mon Sep 17 00:00:00 2001 From: mrdudz Date: Sun, 11 Oct 2015 17:13:28 +0200 Subject: [PATCH] move charset to seperate file again, added comments on charset layout --- libsrc/c64/soft80_cgetc.s | 2 + libsrc/c64/soft80_charset.s | 171 ++++++++++++++++++++++++++++++++++++ libsrc/c64/soft80_conio.s | 143 +----------------------------- libsrc/c64/soft80_cputc.s | 3 +- 4 files changed, 179 insertions(+), 140 deletions(-) create mode 100644 libsrc/c64/soft80_charset.s diff --git a/libsrc/c64/soft80_cgetc.s b/libsrc/c64/soft80_cgetc.s index 130aca7c5..7d8a1d88f 100644 --- a/libsrc/c64/soft80_cgetc.s +++ b/libsrc/c64/soft80_cgetc.s @@ -1,4 +1,6 @@ ; +; Groepaz/Hitmen, 11.10.2015 +; ; char cgetc (void); ; diff --git a/libsrc/c64/soft80_charset.s b/libsrc/c64/soft80_charset.s new file mode 100644 index 000000000..f44fdaf77 --- /dev/null +++ b/libsrc/c64/soft80_charset.s @@ -0,0 +1,171 @@ +; +; Groepaz/Hitmen, 10.10.2015 +; +; character set for use with the soft80 implementation +; + +; the format of the data follows the following layout: +; +; - to avoid unnecessary petscii->screencode conversions, the order of the +; individual characters is different to the C64 ROM charset: +; - $00 - $1f screencodes $60 - $7f (petscii codes $a0 - $bf) +; - $20 - $3f screencodes $20 - $3f (petscii codes $20 - $3f) +; - $40 - $5f screencodes $00 - $1f (petscii codes $40 - $5f) +; - $60 - $7f screencodes $40 - $5f (petscii codes $60 - $7f) +; - only 128 characters are defined here, the soft80 implementation will invert +; the graphics data for inverted display on the fly. +; - finally the lower 4bits are "inverted", ie a space character is represented +; as $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f +; +; the graphics data is arranged differently to normal C64 charsets for speed, +; first comes the first row of all characters, then the second row in the next +; block, etc. like this: +; +; +000 ....xxxx ......xx ....xxxx ........ +; +080 ....xxxx ......xx ....xxxx ....xxxx +; +100 ....xxxx ......xx ....xxxx ....xxxx +; +180 ....x..x ......xx ....xxxx ....xxxx +; +200 ....x..x ......xx ........ ....xxxx +; +280 ....xxxx ......xx ........ ....xxxx +; +300 ....xxxx ......xx ........ ....xxxx +; +380 ....xxxx ......xx ........ ....xxxx + + .export soft80_charset + + .rodata +soft80_charset: + .byte $0f,$03,$0f,$00,$0f,$07,$05,$0e + .byte $0f,$05,$0e,$0b,$0f,$0b,$0f,$0f + .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$00 + .byte $00,$0f,$0e,$0f,$0c,$0b,$03,$03 + .byte $0f,$0b,$05,$05,$0b,$05,$0b,$0b + .byte $0d,$07,$0f,$0f,$0f,$0f,$0f,$0d + .byte $0b,$0b,$0b,$0b,$05,$01,$0b,$01 + .byte $0b,$0b,$0f,$0f,$0d,$0f,$07,$0b + .byte $0b,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$09,$07,$03,$0b,$0f + .byte $0f,$0b,$03,$0b,$03,$01,$01,$0b + .byte $05,$01,$09,$05,$07,$05,$05,$0b + .byte $03,$0b,$03,$0b,$01,$05,$05,$05 + .byte $05,$05,$01,$0b,$07,$0b,$0f,$0a + + .byte $0f,$03,$0f,$0f,$0f,$07,$05,$0e + .byte $0f,$0a,$0e,$0b,$0f,$0b,$0f,$0f + .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$00 + .byte $00,$0f,$0e,$0f,$0c,$0b,$03,$03 + .byte $0f,$0b,$05,$05,$09,$05,$05,$0b + .byte $0b,$0b,$05,$0b,$0f,$0f,$0f,$0d + .byte $05,$0b,$05,$05,$05,$07,$05,$05 + .byte $05,$05,$0f,$0f,$0b,$0f,$0b,$05 + .byte $05,$0f,$07,$0f,$0d,$0f,$09,$0f + .byte $07,$0b,$0d,$07,$03,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0b,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0b,$07,$0b,$0b,$0b + .byte $0f,$0b,$05,$05,$05,$07,$07,$05 + .byte $05,$0b,$0d,$05,$07,$01,$01,$05 + .byte $05,$05,$05,$05,$0b,$05,$05,$05 + .byte $05,$05,$0d,$0b,$07,$0b,$0f,$0a + + .byte $0f,$03,$0f,$0f,$0f,$07,$0a,$0e + .byte $0f,$05,$0e,$0b,$0f,$0b,$0f,$0f + .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$0f + .byte $00,$0f,$0d,$0f,$0c,$0b,$03,$03 + .byte $0f,$0b,$05,$00,$07,$0d,$0b,$07 + .byte $0b,$0b,$0b,$0b,$0f,$0f,$0f,$0b + .byte $01,$03,$0d,$0d,$05,$03,$07,$0d + .byte $05,$05,$0b,$0b,$0b,$08,$0b,$0d + .byte $01,$0b,$07,$09,$0d,$0b,$0b,$09 + .byte $07,$0f,$0f,$07,$0b,$05,$03,$0b + .byte $03,$09,$03,$09,$01,$05,$05,$05 + .byte $05,$05,$01,$0b,$0b,$0b,$05,$0b + .byte $0f,$05,$05,$07,$05,$07,$07,$07 + .byte $05,$0b,$0d,$03,$07,$01,$01,$05 + .byte $05,$05,$05,$07,$0b,$05,$05,$05 + .byte $0b,$05,$0b,$0b,$0b,$0b,$0a,$05 + + .byte $09,$03,$0f,$0f,$0f,$07,$0a,$0e + .byte $0f,$0a,$0e,$08,$0f,$08,$03,$0f + .byte $08,$00,$00,$03,$07,$07,$0e,$0f + .byte $0f,$0f,$05,$0f,$0c,$03,$03,$03 + .byte $0f,$0b,$0f,$05,$0b,$0b,$0b,$0f + .byte $0b,$0b,$01,$01,$0f,$01,$0f,$0b + .byte $05,$0b,$0b,$0b,$01,$0d,$03,$0b + .byte $0b,$09,$0f,$0f,$07,$0f,$0d,$0b + .byte $01,$0d,$03,$07,$09,$05,$01,$05 + .byte $03,$03,$0d,$05,$0b,$01,$05,$05 + .byte $05,$05,$05,$07,$0b,$05,$05,$05 + .byte $05,$05,$0d,$0b,$0b,$0b,$05,$00 + .byte $00,$01,$03,$07,$05,$03,$03,$01 + .byte $01,$0b,$0d,$03,$07,$05,$01,$05 + .byte $03,$05,$03,$0b,$0b,$05,$05,$01 + .byte $0b,$0b,$0b,$00,$0b,$0b,$05,$05 + + .byte $09,$03,$00,$0f,$0f,$07,$05,$0e + .byte $05,$05,$0e,$08,$0c,$08,$03,$0f + .byte $08,$00,$00,$03,$07,$07,$0e,$0f + .byte $0f,$0f,$03,$03,$0f,$03,$0f,$0c + .byte $0f,$0f,$0f,$00,$0d,$07,$04,$0f + .byte $0b,$0b,$0b,$0b,$0f,$0f,$0f,$0b + .byte $05,$0b,$07,$0d,$0d,$0d,$05,$0b + .byte $05,$0d,$0f,$0f,$0b,$08,$0b,$0b + .byte $07,$09,$05,$07,$05,$01,$0b,$05 + .byte $05,$0b,$0d,$03,$0b,$01,$05,$05 + .byte $05,$05,$07,$0b,$0b,$05,$05,$01 + .byte $0b,$05,$0b,$0b,$0b,$0b,$0f,$00 + .byte $00,$05,$05,$07,$05,$07,$07,$05 + .byte $05,$0b,$0d,$03,$07,$05,$01,$05 + .byte $07,$05,$03,$0d,$0b,$05,$05,$01 + .byte $0b,$0b,$0b,$00,$07,$0b,$05,$0a + + .byte $0f,$03,$00,$0f,$0f,$07,$05,$0e + .byte $05,$0a,$0e,$0b,$0c,$0f,$0b,$0f + .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f + .byte $0f,$00,$03,$03,$0f,$0f,$0f,$0c + .byte $0f,$0f,$0f,$05,$03,$05,$05,$0f + .byte $0b,$0b,$05,$0b,$0b,$0f,$0b,$07 + .byte $05,$0b,$07,$05,$0d,$05,$05,$0b + .byte $05,$05,$0b,$0b,$0b,$0f,$0b,$0f + .byte $05,$05,$05,$07,$05,$07,$0b,$09 + .byte $05,$0b,$0d,$05,$0b,$05,$05,$05 + .byte $03,$09,$07,$0d,$0b,$05,$0b,$01 + .byte $05,$09,$07,$0b,$0d,$0b,$0f,$0b + .byte $0f,$05,$05,$05,$05,$07,$07,$05 + .byte $05,$0b,$05,$05,$07,$05,$05,$05 + .byte $07,$0b,$05,$05,$0b,$05,$0b,$05 + .byte $05,$0b,$07,$0b,$07,$0b,$05,$0a + + .byte $0f,$03,$00,$0f,$0f,$07,$0a,$0e + .byte $0a,$05,$0e,$0b,$0c,$0f,$0b,$00 + .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f + .byte $0f,$00,$07,$03,$0f,$0f,$0f,$0c + .byte $0f,$0b,$0f,$05,$0b,$05,$08,$0f + .byte $0d,$07,$0f,$0f,$0b,$0f,$0b,$07 + .byte $0b,$01,$01,$0b,$0d,$0b,$0b,$0b + .byte $0b,$0b,$0f,$0b,$0d,$0f,$07,$0b + .byte $0b,$09,$03,$09,$09,$09,$0b,$0d + .byte $05,$01,$0d,$05,$01,$05,$05,$0b + .byte $07,$0d,$07,$03,$0d,$09,$0b,$05 + .byte $05,$0d,$01,$09,$0d,$03,$0f,$0b + .byte $0f,$05,$03,$0b,$03,$01,$07,$0b + .byte $05,$01,$0b,$05,$01,$05,$05,$0b + .byte $07,$0d,$05,$0b,$0b,$0b,$0b,$05 + .byte $05,$0b,$01,$0b,$0b,$0b,$05,$05 + + .byte $0f,$03,$00,$0f,$00,$07,$0a,$0e + .byte $0a,$0a,$0e,$0b,$0c,$0f,$0b,$00 + .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f + .byte $0f,$00,$0f,$03,$0f,$0f,$0f,$0c + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$07,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$07,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$03 + .byte $0f,$0f,$03,$0f,$0f,$0f,$0f,$0f + .byte $07,$0d,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$03,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f + .byte $0f,$0f,$0f,$0b,$0b,$0b,$0f,$05 diff --git a/libsrc/c64/soft80_conio.s b/libsrc/c64/soft80_conio.s index 6b909822a..333251854 100644 --- a/libsrc/c64/soft80_conio.s +++ b/libsrc/c64/soft80_conio.s @@ -1,11 +1,13 @@ ; -; Low level stuff for screen output/console input +; Groepaz/Hitmen, 11.10.2015 +; +; Low level init code for soft80 screen output/console input ; .constructor soft80_init .destructor soft80_shutdown - .import soft80_kclrscr + .import soft80_kclrscr, soft80_charset .import __textcolor, __bgcolor .importzp ptr1, ptr2, ptr3 @@ -91,140 +93,3 @@ soft80_shutdown: sta VIC_VIDEO_ADR rts - .rodata -soft80_charset: - .byte $0f,$03,$0f,$00,$0f,$07,$05,$0e - .byte $0f,$05,$0e,$0b,$0f,$0b,$0f,$0f - .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$00 - .byte $00,$0f,$0e,$0f,$0c,$0b,$03,$03 - .byte $0f,$0b,$05,$05,$0b,$05,$0b,$0b - .byte $0d,$07,$0f,$0f,$0f,$0f,$0f,$0d - .byte $0b,$0b,$0b,$0b,$05,$01,$0b,$01 - .byte $0b,$0b,$0f,$0f,$0d,$0f,$07,$0b - .byte $0b,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$09,$07,$03,$0b,$0f - .byte $0f,$0b,$03,$0b,$03,$01,$01,$0b - .byte $05,$01,$09,$05,$07,$05,$05,$0b - .byte $03,$0b,$03,$0b,$01,$05,$05,$05 - .byte $05,$05,$01,$0b,$07,$0b,$0f,$0a - - .byte $0f,$03,$0f,$0f,$0f,$07,$05,$0e - .byte $0f,$0a,$0e,$0b,$0f,$0b,$0f,$0f - .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$00 - .byte $00,$0f,$0e,$0f,$0c,$0b,$03,$03 - .byte $0f,$0b,$05,$05,$09,$05,$05,$0b - .byte $0b,$0b,$05,$0b,$0f,$0f,$0f,$0d - .byte $05,$0b,$05,$05,$05,$07,$05,$05 - .byte $05,$05,$0f,$0f,$0b,$0f,$0b,$05 - .byte $05,$0f,$07,$0f,$0d,$0f,$09,$0f - .byte $07,$0b,$0d,$07,$03,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0b,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0b,$07,$0b,$0b,$0b - .byte $0f,$0b,$05,$05,$05,$07,$07,$05 - .byte $05,$0b,$0d,$05,$07,$01,$01,$05 - .byte $05,$05,$05,$05,$0b,$05,$05,$05 - .byte $05,$05,$0d,$0b,$07,$0b,$0f,$0a - - .byte $0f,$03,$0f,$0f,$0f,$07,$0a,$0e - .byte $0f,$05,$0e,$0b,$0f,$0b,$0f,$0f - .byte $0f,$0b,$0f,$0b,$07,$07,$0e,$0f - .byte $00,$0f,$0d,$0f,$0c,$0b,$03,$03 - .byte $0f,$0b,$05,$00,$07,$0d,$0b,$07 - .byte $0b,$0b,$0b,$0b,$0f,$0f,$0f,$0b - .byte $01,$03,$0d,$0d,$05,$03,$07,$0d - .byte $05,$05,$0b,$0b,$0b,$08,$0b,$0d - .byte $01,$0b,$07,$09,$0d,$0b,$0b,$09 - .byte $07,$0f,$0f,$07,$0b,$05,$03,$0b - .byte $03,$09,$03,$09,$01,$05,$05,$05 - .byte $05,$05,$01,$0b,$0b,$0b,$05,$0b - .byte $0f,$05,$05,$07,$05,$07,$07,$07 - .byte $05,$0b,$0d,$03,$07,$01,$01,$05 - .byte $05,$05,$05,$07,$0b,$05,$05,$05 - .byte $0b,$05,$0b,$0b,$0b,$0b,$0a,$05 - - .byte $09,$03,$0f,$0f,$0f,$07,$0a,$0e - .byte $0f,$0a,$0e,$08,$0f,$08,$03,$0f - .byte $08,$00,$00,$03,$07,$07,$0e,$0f - .byte $0f,$0f,$05,$0f,$0c,$03,$03,$03 - .byte $0f,$0b,$0f,$05,$0b,$0b,$0b,$0f - .byte $0b,$0b,$01,$01,$0f,$01,$0f,$0b - .byte $05,$0b,$0b,$0b,$01,$0d,$03,$0b - .byte $0b,$09,$0f,$0f,$07,$0f,$0d,$0b - .byte $01,$0d,$03,$07,$09,$05,$01,$05 - .byte $03,$03,$0d,$05,$0b,$01,$05,$05 - .byte $05,$05,$05,$07,$0b,$05,$05,$05 - .byte $05,$05,$0d,$0b,$0b,$0b,$05,$00 - .byte $00,$01,$03,$07,$05,$03,$03,$01 - .byte $01,$0b,$0d,$03,$07,$05,$01,$05 - .byte $03,$05,$03,$0b,$0b,$05,$05,$01 - .byte $0b,$0b,$0b,$00,$0b,$0b,$05,$05 - - .byte $09,$03,$00,$0f,$0f,$07,$05,$0e - .byte $05,$05,$0e,$08,$0c,$08,$03,$0f - .byte $08,$00,$00,$03,$07,$07,$0e,$0f - .byte $0f,$0f,$03,$03,$0f,$03,$0f,$0c - .byte $0f,$0f,$0f,$00,$0d,$07,$04,$0f - .byte $0b,$0b,$0b,$0b,$0f,$0f,$0f,$0b - .byte $05,$0b,$07,$0d,$0d,$0d,$05,$0b - .byte $05,$0d,$0f,$0f,$0b,$08,$0b,$0b - .byte $07,$09,$05,$07,$05,$01,$0b,$05 - .byte $05,$0b,$0d,$03,$0b,$01,$05,$05 - .byte $05,$05,$07,$0b,$0b,$05,$05,$01 - .byte $0b,$05,$0b,$0b,$0b,$0b,$0f,$00 - .byte $00,$05,$05,$07,$05,$07,$07,$05 - .byte $05,$0b,$0d,$03,$07,$05,$01,$05 - .byte $07,$05,$03,$0d,$0b,$05,$05,$01 - .byte $0b,$0b,$0b,$00,$07,$0b,$05,$0a - - .byte $0f,$03,$00,$0f,$0f,$07,$05,$0e - .byte $05,$0a,$0e,$0b,$0c,$0f,$0b,$0f - .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f - .byte $0f,$00,$03,$03,$0f,$0f,$0f,$0c - .byte $0f,$0f,$0f,$05,$03,$05,$05,$0f - .byte $0b,$0b,$05,$0b,$0b,$0f,$0b,$07 - .byte $05,$0b,$07,$05,$0d,$05,$05,$0b - .byte $05,$05,$0b,$0b,$0b,$0f,$0b,$0f - .byte $05,$05,$05,$07,$05,$07,$0b,$09 - .byte $05,$0b,$0d,$05,$0b,$05,$05,$05 - .byte $03,$09,$07,$0d,$0b,$05,$0b,$01 - .byte $05,$09,$07,$0b,$0d,$0b,$0f,$0b - .byte $0f,$05,$05,$05,$05,$07,$07,$05 - .byte $05,$0b,$05,$05,$07,$05,$05,$05 - .byte $07,$0b,$05,$05,$0b,$05,$0b,$05 - .byte $05,$0b,$07,$0b,$07,$0b,$05,$0a - - .byte $0f,$03,$00,$0f,$0f,$07,$0a,$0e - .byte $0a,$05,$0e,$0b,$0c,$0f,$0b,$00 - .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f - .byte $0f,$00,$07,$03,$0f,$0f,$0f,$0c - .byte $0f,$0b,$0f,$05,$0b,$05,$08,$0f - .byte $0d,$07,$0f,$0f,$0b,$0f,$0b,$07 - .byte $0b,$01,$01,$0b,$0d,$0b,$0b,$0b - .byte $0b,$0b,$0f,$0b,$0d,$0f,$07,$0b - .byte $0b,$09,$03,$09,$09,$09,$0b,$0d - .byte $05,$01,$0d,$05,$01,$05,$05,$0b - .byte $07,$0d,$07,$03,$0d,$09,$0b,$05 - .byte $05,$0d,$01,$09,$0d,$03,$0f,$0b - .byte $0f,$05,$03,$0b,$03,$01,$07,$0b - .byte $05,$01,$0b,$05,$01,$05,$05,$0b - .byte $07,$0d,$05,$0b,$0b,$0b,$0b,$05 - .byte $05,$0b,$01,$0b,$0b,$0b,$05,$05 - - .byte $0f,$03,$00,$0f,$00,$07,$0a,$0e - .byte $0a,$0a,$0e,$0b,$0c,$0f,$0b,$00 - .byte $0b,$0f,$0b,$0b,$07,$07,$0e,$0f - .byte $0f,$00,$0f,$03,$0f,$0f,$0f,$0c - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$07,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$07,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$03 - .byte $0f,$0f,$03,$0f,$0f,$0f,$0f,$0f - .byte $07,$0d,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$03,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0f,$0f,$0f,$0f,$0f - .byte $0f,$0f,$0f,$0b,$0b,$0b,$0f,$05 diff --git a/libsrc/c64/soft80_cputc.s b/libsrc/c64/soft80_cputc.s index 3ef982aaa..a7662f1ad 100644 --- a/libsrc/c64/soft80_cputc.s +++ b/libsrc/c64/soft80_cputc.s @@ -1,4 +1,6 @@ ; +; Groepaz/Hitmen, 11.10.2015 +; ; void cputcxy (unsigned char x, unsigned char y, char c); ; void cputc (char c); ; @@ -49,7 +51,6 @@ L1: cmp #$0D ; LF? beq soft80_newline ; Recalculate pointers ; Printable char of some sort - tay bpl L10