Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;subscribe to me on yt plz :D
- ;https://www.youtube.com/@polybay
- #ifndef _STD_TEXT8_ASM
- #define _STD_TEXT8_ASM
- ;std/math.asm
- #include "pseudoOps.h"
- #include "l1_sub.h"
- ;(231 = 0xe7 = default palette color white)
- #ifndef _T8C
- #define _T8C 0xe7
- #endif
- #ifdef TEXT8_USE_ALL
- #ifndef TEXT8_USE_SPECIALS_LOW
- #define TEXT8_USE_SPECIALS_LOW
- #endif
- #ifndef TEXT8_USE_SPECIALS_A
- #define TEXT8_USE_SPECIALS_A
- #endif
- #ifndef TEXT8_USE_SPECIALS_B
- #define TEXT8_USE_SPECIALS_B
- #endif
- #ifndef TEXT8_USE_DIGITS
- #define TEXT8_USE_DIGITS
- #endif
- #ifndef TEXT8_USE_CASE_UPPER
- #define TEXT8_USE_CASE_UPPER
- #endif
- #ifndef TEXT8_USE_CASE_LOWER
- #define TEXT8_USE_CASE_LOWER
- #endif
- #endif
- :_text8_char_lookup:
- !16 _text8sp,_text8sp,_text8sp,_text8sp ;00,01,02,03:NUL SOH STX ETX
- !16 _text8?_,_text805,_text806,_text807 ;04,05,06,07:EOT ENQ ACK BEL
- !16 _text808,_text8sp,_text8sp,_text80B ;08,09,0A,0B: BS TAB LF VT
- !16 _text80C,_text80D,_text80E,_text80F ;0C,0D,0E,0F: FF CR SO SI
- !16 _text810,_text811,_text812,_text813 ;10,11,12,13:DLE DC1 DC2 DC3
- !16 _text814,_text815,_text816,_text817 ;14,15,16,17:DC4 NAK SYN ETB
- !16 _text818,_text819,_text81A,_text81B ;18,19,1A,1B:CAN EM SUB ESC
- !16 _text81C,_text81D,_text81E,_text81F ;1C,1D,1E,1F: FS GS RS US
- ;
- !16 _text8sp,_text8_!,_text8dq,_text8_# ;20,21,22,23:" " ! " #
- !16 _text8_$,_text8_%,_text8_&,_text8ap ;24,25,26,27: $ % & '
- !16 _text8_(,_text8_),_text8_*,_text8_+ ;28,29,2A,2B: ( ) * +
- !16 _text8cm,_text8_-,_text8_.,_text8_/ ;2C,2D,2E,2F: , - . /
- !16 _text8_0,_text8_1,_text8_2,_text8_3 ;30,31,32,33: 0 1 2 3
- !16 _text8_4,_text8_5,_text8_6,_text8_7 ;34,35,36,37: 4 5 6 7
- !16 _text8_8,_text8_9,_text8cl,_text8sc ;38,39,3A,3B: 8 9 : ;
- !16 _text8_<,_text8_=,_text8_>,_text8_? ;3C,3D,3E,3F: < = > ?
- ;
- !16 _text8at,_text8_A,_text8_B,_text8_C ;40,41,42,43: @ A B C
- !16 _text8_D,_text8_E,_text8_F,_text8_G ;44,45,46,47: D E F G
- !16 _text8_H,_text8_I,_text8_J,_text8_K ;48,49,4A,4B: H I J K
- !16 _text8_L,_text8_M,_text8_N,_text8_O ;4C,4D,4E,4F: L M N O
- !16 _text8_P,_text8_Q,_text8_R,_text8_S ;50,51,52,53: P Q R S
- !16 _text8_T,_text8_U,_text8_V,_text8_W ;54,55,56,57: T U V W
- !16 _text8_X,_text8_Y,_text8_Z,_text8_[ ;58,59,5A,5B: X Y Z [
- !16 _text8_\,_text8_],_text8_^,_text8__ ;5C,5D,5E,5F: \ ] ^ _
- ;
- !16 _text8_`,_text8_a,_text8_b,_text8_c ;60,61,62,63: ` a b c
- !16 _text8_d,_text8_e,_text8_f,_text8_g ;64,65,66,67: d e f g
- !16 _text8_h,_text8_i,_text8_j,_text8_k ;68,69,6A,6B: h i j k
- !16 _text8_l,_text8_m,_text8_n,_text8_o ;6C,6D,6E,6F: l m n o
- !16 _text8_p,_text8_q,_text8_r,_text8_s ;70,71,72,73: p q r s
- !16 _text8_t,_text8_u,_text8_v,_text8_w ;74,75,76,77: t u v w
- !16 _text8_x,_text8_y,_text8_z,_text8_{ ;78,79,7A,7B: x y z {
- !16 _text8_|,_text8_},_text8_~,_text8?_ ;7C,7D,7E,7F: | } ~ DEL
- ;_text8_char_lookup;
- :_text8_advance_lookup:
- #ifndef TEXT8_MONOSPACED
- ; NYP NXP ░ ▒ ▓ █TB NL
- !8 0,0,0,0,0,3,3,3,3,8,0,3,3,3,3,3 ;0
- !8 4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3 ;1
- ;sp! " # $ % & ' ( ) * + , - . /
- !8 4,2,4,4,4,4,4,2,3,3,4,4,3,4,4,4 ;2
- ;0 1 2 3 4 5 6 7 8 9 : ; < = > ?
- !8 4,4,4,4,4,4,4,4,4,4,2,3,4,4,4,4 ;3
- ;@ A B C D E F G H I J K L M N O
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 ;4
- ;P Q R S T U V W X Y Z [ \ ] ^ _
- !8 4,4,4,4,4,4,4,4,4,4,4,3,4,3,4,4 ;5
- ;` a b c d e f g h i j k l m n o
- !8 3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 ;6
- ;p q r s t u v w x y z { | } ~ missing char
- !8 4,4,4,4,4,4,4,4,4,4,4,4,2,4,4,4 ;7
- ;0 1 2 3 4 5 6 7 8 9 A B C D E F
- #else
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- !8 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4
- #endif
- ;_text8_advance_lookup;
- ;you can basically do anything for chars > 4 (except \n and \t)
- ;(this is because 0 is null terminator, and 1->4 are control codes)
- #ifdef TEXT8_USE_SPECIALS_LOW
- :_text8_SPECIALS_LOW:
- ;:_text800: NULL (do not use)
- ;:_text801: -x (do not use)
- ;:_text802: +x (do not use)
- ;:_text803: -y (do not use)
- ;:_text804: +y (do not use)
- :_text805: !8 0,0, 3,5
- !8 _T8C,0x00,0x00
- !8 0x00,0x00,0x00
- !8 0x00,0x00,_T8C
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,0x00
- :_text806: !8 0,0, 3,5
- !8 _T8C,0x00,0x00
- !8 0x00,0x00,_T8C
- !8 _T8C,0x00,0x00
- !8 0x00,0x00,_T8C
- !8 _T8C,0x00,0x00
- :_text807: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- :_text808: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- ;:_text809: \t (do not use)
- ;:_text80A: \n (do not use)
- :_text80B:
- :_text80C:
- :_text80D:
- :_text80E:
- :_text80F:
- :_text810:
- :_text811:
- :_text812:
- :_text813:
- :_text814:
- :_text815:
- :_text816:
- :_text817:
- :_text818:
- :_text819:
- :_text81A:
- :_text81B:
- :_text81C:
- :_text81D:
- :_text81E:
- :_text81F:
- #endif
- #ifdef TEXT8_USE_SPECIALS_A
- :_text8_SPECIALS_A:
- :_text8sp: !8 0,0, 1,1 ; " "
- !8 0x00;0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8_!: !8 0,0, 1,5
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- !8 0x00;0x00,0x00
- !8 _T8C;0x00,0x00
- :_text8dq: !8 0,0, 3,2 ; "\""
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8_#: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_$: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,0x00
- !8 0x00,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- :_text8_%: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,_T8C
- :_text8_&: !8 0,0, 3,5
- !8 _T8C,_T8C,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8ap: !8 0,0, 1,2 ; "'"
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8_(: !8 0,0, 2,5
- !8 0x00,_T8C;0x00
- !8 _T8C,0x00;0x00
- !8 _T8C,0x00;0x00
- !8 _T8C,0x00;0x00
- !8 0x00,_T8C;0x00
- :_text8_): !8 0,0, 2,5
- !8 _T8C,0x00;0x00
- !8 0x00,_T8C;0x00
- !8 0x00,_T8C;0x00
- !8 0x00,_T8C;0x00
- !8 _T8C,0x00;0x00
- :_text8cm: !8 0,0, 2,5 ; ","
- !8 0x00,0x00;0x00
- !8 0x00,0x00;0x00
- !8 0x00,0x00;0x00
- !8 0x00,_T8C;0x00
- !8 _T8C,0x00;0x00
- :_text8_.: !8 0,0, 1,5
- !8 0x00;0x00,0x00
- !8 0x00;0x00,0x00
- !8 0x00;0x00,0x00
- !8 0x00;0x00,0x00
- !8 _T8C;0x00,0x00
- :_text8_/: !8 0,0, 3,5
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,0x00
- :_text8cl: !8 0,0, 1,4 ; ":"
- !8 0x00;0x00,0x00
- !8 _T8C;0x00,0x00
- !8 0x00;0x00,0x00
- !8 _T8C;0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8sc: !8 0,0, 2,5 ; ";"
- !8 0x00,0x00;0x00
- !8 0x00,_T8C;0x00
- !8 0x00,0x00;0x00
- !8 0x00,_T8C;0x00
- !8 _T8C,0x00;0x00
- :_text8_?: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,_T8C
- !8 0x00,0x00,0x00
- !8 0x00,_T8C,0x00
- #endif
- #ifdef TEXT8_USE_SPECIALS_B
- :_text8_SPECIALS_B:
- :_text8_*: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- :_text8_+: !8 0,0, 3,4
- !8 0x00,0x00,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- ;!8 0x00,0x00,0x00
- :_text8_-: !8 0,0, 3,3
- !8 0x00,0x00,0x00
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8_<: !8 0,0, 3,5
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,0x00,_T8C
- :_text8_=: !8 0,0, 3,4
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- ;!8 0x00,0x00,0x00
- :_text8_>: !8 0,0, 3,5
- !8 _T8C,0x00,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,0x00
- :_text8at: !8 0,0, 3,5 ; "@"
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,0x00
- !8 0x00,_T8C,_T8C
- :_text8_[: !8 0,0, 2,5
- !8 _T8C,_T8C;0x00
- !8 _T8C,0x00;0x00
- !8 _T8C,0x00;0x00
- !8 _T8C,0x00;0x00
- !8 _T8C,_T8C;0x00
- :_text8_\: !8 0,0, 3,5
- !8 _T8C,0x00,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,0x00,_T8C
- :_text8_]: !8 0,0, 2,5
- !8 _T8C,_T8C;0x00
- !8 0x00,_T8C;0x00
- !8 0x00,_T8C;0x00
- !8 0x00,_T8C;0x00
- !8 _T8C,_T8C;0x00
- :_text8_^: !8 0,0, 3,2
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8__: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 0x00,0x00,0x00
- !8 0x00,0x00,0x00
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_`: !8 0,0, 2,2
- !8 _T8C,0x00;0x00
- !8 0x00,_T8C;0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- ;!8 0x00,0x00,0x00
- :_text8_{: !8 0,0, 3,5
- !8 0x00,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,_T8C
- :_text8_|: !8 0,0, 1,5
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- !8 _T8C;0x00,0x00
- :_text8_}: !8 0,0, 3,5
- !8 _T8C,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,0x00
- :_text8_~: !8 0,0, 3,4
- !8 0x00,0x00,0x00
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- ;!8 0x00,0x00,0x00
- #endif
- #ifdef TEXT8_USE_DIGITS
- :_text8_DIGITS:
- :_text8_0: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_1: !8 0,0, 3,5
- !8 _T8C,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_2: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_3: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_4: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,0x00,_T8C
- :_text8_5: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_6: !8 0,0, 3,5
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_7: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,0x00,_T8C
- :_text8_8: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_9: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,0x00,_T8C
- #endif
- #ifdef TEXT8_USE_CASE_UPPER
- :_text8_CASE_UPPER:
- :_text8_A: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_B: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_C: !8 0,0, 3,5
- !8 0x00,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 0x00,_T8C,_T8C
- :_text8_D: !8 0,0, 3,5
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_E: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_F: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- :_text8_G: !8 0,0, 3,5
- !8 0x00,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_H: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_I: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_J: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,0x00
- :_text8_K: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_L: !8 0,0, 3,5
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_M: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_N: !8 0,0, 3,5
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_O: !8 0,0, 3,5
- !8 0x00,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- :_text8_P: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- :_text8_Q: !8 0,0, 3,5
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 0x00,_T8C,_T8C
- :_text8_R: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_S: !8 0,0, 3,5
- !8 0x00,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,0x00
- :_text8_T: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- :_text8_U: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,_T8C
- :_text8_V: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- :_text8_W: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_X: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_Y: !8 0,0, 3,5
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_Z: !8 0,0, 3,5
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- #endif
- #ifdef TEXT8_USE_CASE_LOWER
- :_text8_CASE_LOWER:
- :_text8_a: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_b: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_c: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_d: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- :_text8_e: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_f: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- :_text8_g: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_h: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_i: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_j: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,0x00
- :_text8_k: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_l: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- :_text8_m: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_n: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_o: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 0x00,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- :_text8_p: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,0x00
- :_text8_q: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 0x00,_T8C,_T8C
- :_text8_r: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,0x00
- !8 _T8C,0x00,_T8C
- :_text8_s: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 0x00,_T8C,_T8C
- !8 _T8C,0x00,0x00
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,0x00
- :_text8_t: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- !8 0x00,_T8C,0x00
- :_text8_u: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,_T8C
- :_text8_v: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- :_text8_w: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_x: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 0x00,_T8C,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,0x00,_T8C
- :_text8_y: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,_T8C,_T8C
- :_text8_z: !8 0,0, 3,5
- !8 0x00,0x00,0x00
- !8 _T8C,_T8C,_T8C
- !8 0x00,0x00,_T8C
- !8 _T8C,0x00,0x00
- !8 _T8C,_T8C,_T8C
- #endif
- ;if not defined, just make them point to missing char
- #ifndef TEXT8_USE_SPECIALS_LOW
- :_text8_SPECIALS_LOW:
- :_text805: && :_text806: && :_text807: && :_text808:
- :_text80B: && :_text80C: && :_text80D: && :_text80E:
- :_text80F: && :_text810: && :_text811: && :_text812:
- :_text813: && :_text814: && :_text815: && :_text816:
- :_text817: && :_text818: && :_text819: && :_text81A:
- :_text81B: && :_text81C: && :_text81D: && :_text81E:
- :_text81F:
- #endif
- #ifndef TEXT8_USE_SPECIALS_A
- :_text8_SPECIALS_A:
- :_text8sp: /* */ && :_text8_!: && :_text8dq: /*"*/ && :_text8_#:
- :_text8_$: && :_text8_%: && :_text8_&: && :_text8ap: /*'*/
- :_text8_(: && :_text8_): && :_text8cm: /*,*/ && :_text8_.:
- :_text8_/: && :_text8cl: /*:*/ && :_text8sc: /*;*/ && :_text8_?:
- #endif
- #ifndef TEXT8_USE_SPECIALS_B
- :_text8_SPECIALS_B:
- :_text8_*: && :_text8_+: && :_text8_-: && :_text8_<:
- :_text8_=: && :_text8_>: && :_text8at: /*@*/ && :_text8_[:
- :_text8_\: && :_text8_]: && :_text8_^: && :_text8__:
- :_text8_`: && :_text8_{: && :_text8_|: && :_text8_}:
- :_text8_~:
- #endif
- #ifndef TEXT8_USE_DIGITS
- :_text8_DIGITS:
- :_text8_0: && :_text8_1: && :_text8_2: && :_text8_3:
- :_text8_4: && :_text8_5: && :_text8_6: && :_text8_7:
- :_text8_8: && :_text8_9:
- #endif
- #ifndef TEXT8_USE_CASE_UPPER
- :_text8_CASE_UPPER:
- :_text8_A: && :_text8_B: && :_text8_C: && :_text8_D:
- :_text8_E: && :_text8_F: && :_text8_G: && :_text8_H:
- :_text8_I: && :_text8_J: && :_text8_K: && :_text8_L:
- :_text8_M: && :_text8_N: && :_text8_O: && :_text8_P:
- :_text8_Q: && :_text8_R: && :_text8_S: && :_text8_T:
- :_text8_U: && :_text8_V: && :_text8_W: && :_text8_X:
- :_text8_Y: && :_text8_Z:
- #endif
- #ifndef TEXT8_USE_CASE_LOWER
- :_text8_CASE_LOWER:
- :_text8_a: && :_text8_b: && :_text8_c: && :_text8_d:
- :_text8_e: && :_text8_f: && :_text8_g: && :_text8_h:
- :_text8_i: && :_text8_j: && :_text8_k: && :_text8_l:
- :_text8_m: && :_text8_n: && :_text8_o: && :_text8_p:
- :_text8_q: && :_text8_r: && :_text8_s: && :_text8_t:
- :_text8_u: && :_text8_v: && :_text8_w: && :_text8_x:
- :_text8_y: && :_text8_z:
- #endif
- :_text8?_: !8 0,0,3,5 ;missing char
- !8 0x00,_T8C,0x00
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 _T8C,_T8C,_T8C
- !8 0x00,_T8C,0x00
- ;draws text block at ^ to the canvas (250 char limit i think)
- ;Ex.: '!8 20,20,0,0,"something",0' will draw "something" at x,y=20,20
- ;3rd byte is # of chars to print (0 to keep going until null-terminated)
- ;(null terminator must be explicitly defined)
- ;(4th byte of block is unused for now)
- :_text8_draw: l1prep ;scratch: A,B=chr_sprite C=chr D,E=x,y
- ldi #,0 && lda *,L1CRG && sta $,_SCRATCH_D ;store x to scratch d
- ldi #,1 && lda *,L1CRG && sta $,_SCRATCH_E ;store y to scratch e
- lda #,4 && sta $,.off+1 ;reset string offset to 4
- .loop:
- ;checking if index is correct
- .off: ldi #,4 ;for self-modifying code; initial value irrelevant
- tia && xor #,0xff && bzs_long .r ;if I==255, return
- ldi #,2 ;index of char limit byte; (this explains the .off-1)
- lda *,L1CRG && bzs .char ;if char limit!=0, do check
- ;if char limit+3 < string offset, return
- lda *,L1CRG ;load char limit into A again
- add #,3 && cmp @,.off-1 ;compare char limit+3 to string offset
- blt_long .r ;branch if char limit+4 < string offset
- ;handling of the char itself
- .char: ;ldi_abs .off+1
- ldi @,.off-1 && lda *,L1CRG ;restore string offset && get char
- ror #,7 && and #,0xfe ;A<<=1
- sta $,_SCRATCH_C ;store char lookup offset
- ;decide what to do for given char
- bzs_long .r ;return if null char
- ldi #,0 ;abs addressing
- .if_strt: lda @,_SCRATCH_C ;if char lookup offset == 1<<1, --y
- cmp #,1<<1 ;^^
- bec_long .not_--y ;^^
- lda @,_SCRATCH_E && add #,-1 && sta $,_SCRATCH_E
- jmp .loop_end
- .not_--y: lda @,_SCRATCH_C ;else if char lookup offset == 2<<1, ++y
- cmp #,2<<1 ;^^
- bec_long .not_++y ;^^
- lda @,_SCRATCH_E && add #,1 && sta $,_SCRATCH_E
- jmp .loop_end
- .not_++y: lda @,_SCRATCH_C ;else if char lookup offset == 3<<1, --x
- cmp #,3<<1 ;^^
- bec_long .not_--x ;^^
- lda @,_SCRATCH_D && add #,-1 && sta $,_SCRATCH_D
- jmp .loop_end
- .not_--x: lda @,_SCRATCH_C ;else if char lookup offset == 4<<1, ++x
- cmp #,4<<1 ;^^
- bec_long .not_++x ;^^
- lda @,_SCRATCH_D && add #,1 && sta $,_SCRATCH_D
- jmp .loop_end
- .not_++x: lda @,_SCRATCH_C ;else if char lookup offset == '\n'<<1, line break
- cmp #,0x0A<<1 ;^^(this was made before char literal
- bec_long .not_\n ;^^ escape sequences were supported)
- lda *,L1CRG && sta $,_SCRATCH_D ;reset x to its original state
- lda @,_SCRATCH_E && add #,6 && sta $,_SCRATCH_E ;y+=6
- jmp .loop_end
- .not_\n: ;else
- ;get char sprite address
- ldi @,_SCRATCH_C ;abs address, as I should = 0 at this point
- ldl @,_text8_char_lookup && ini ;get low byte of char sprite && inc. I
- ldh @,_text8_char_lookup ;get high byte
- stl $,_SCRATCH_A && sth $,_SCRATCH_B ;store char sprite address
- ;copy x&y to char sprite before drawing char to canvas
- ldi #,0 ;abs addressing
- lda @,_SCRATCH_D && sta ^ && inc ;copy x,y to char sprite's x,y
- lda @,_SCRATCH_E && sta ^ ;^^
- ldl @,_SCRATCH_A && ldh @,_SCRATCH_B ;restore char sprite address
- sys #,0x06 ;draw char to canvas
- ;advance to the right by a certain amount
- lda @,_SCRATCH_C ;load char lookup offset (I should = 0 at this point)
- ror #,1 && tai ;undo previous shift left && copy A to I
- lda @,_text8_advance_lookup ;load advance width into A
- ldi #,0 && add @,_SCRATCH_D ;add advance width to current x pos.
- sta $,_SCRATCH_D ;store new x position
- .loop_end:
- ldi_abs .off+1 ;increment string offset
- ini && sti $,.off+1 ;^^
- jmp .loop
- .r: l1rts
- #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement