From 6f9f3b1467552f27020d067f635c3daee921f902 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Tue, 1 Jan 2019 09:47:47 -0800 Subject: [PATCH] Icons for graphics, AppleWorks types --- desktop.inc | 4 +- desktop/desktop_aux.s | 140 ++++++++++++++++++++++++++++++++++++++++++ desktop/desktop_res.s | 36 +++++++++-- inc/prodos.inc | 4 ++ 4 files changed, 176 insertions(+), 8 deletions(-) diff --git a/desktop.inc b/desktop.inc index 822c6f3..b4639eb 100644 --- a/desktop.inc +++ b/desktop.inc @@ -185,10 +185,10 @@ last_menu_click_params := $E25A ;;; (bits 4,5,6) ;;; 000 = directory ;;; 001 = system -;;; 010 = binary +;;; 010 = binary (maybe runnable) ;;; 011 = basic ;;; 100 = (unused) -;;; 101 = text/generic +;;; 101 = data (text/generic/...) ;;; 110 = (unused) ;;; 111 = trash ;;; (bit 7 = open flag) diff --git a/desktop/desktop_aux.s b/desktop/desktop_aux.s index 4f9d931..c506f2c 100644 --- a/desktop/desktop_aux.s +++ b/desktop/desktop_aux.s @@ -10,6 +10,145 @@ .proc desktop_aux .org $851F + +;;; ============================================================ + +graphics_icon: + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1000000),px(%0000000),px(%0000000),px(%0000001) + .byte px(%1000110),px(%0000000),px(%0000000),px(%0000001) + .byte px(%1001111),px(%0000000),px(%0000011),px(%0000001) + .byte px(%1000110),px(%0000000),px(%0000111),px(%1000001) + .byte px(%1000000),px(%0001100),px(%0001111),px(%1100001) + .byte px(%1000000),px(%0111111),px(%0011111),px(%1110001) + .byte px(%1000011),px(%1111111),px(%1111111),px(%1111001) + .byte px(%1001111),px(%1111111),px(%1111111),px(%1111001) + .byte px(%1001111),px(%1111111),px(%1111111),px(%1111001) + .byte px(%1000000),px(%0000000),px(%0000000),px(%0000001) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) +graphics_mask: + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + .byte px(%1111111),px(%1111111),px(%1111111),px(%1111111) + +aw_wp_icon: + .byte px(%0111111),px(%1111111),px(%1111100),px(%0000000) + .byte px(%0100000),px(%0000000),px(%0001011),px(%0000000) + .byte px(%0100011),px(%0001000),px(%1001000),px(%1100000) + .byte px(%0100100),px(%1001010),px(%1001000),px(%0011000) + .byte px(%0100111),px(%1001010),px(%1001000),px(%0000110) + .byte px(%0100100),px(%1000101),px(%0001111),px(%1111110) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100000),px(%0111100),px(%1110011),px(%1110010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100011),px(%1100111),px(%1100111),px(%1100010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100011),px(%1111001),px(%1111001),px(%1100010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100011),px(%1001110),px(%0111100),px(%1100010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + + ;; TODO: Dedupe these document masks by making icon bitmap + ;; entries explicitly link to masks. + .byte px(%0111111),px(%1111111),px(%1111100),px(%0000000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%0000000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1100000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + +aw_ss_icon: + .byte px(%0111111),px(%1111111),px(%1111100),px(%0000000) + .byte px(%0100000),px(%0000000),px(%0001011),px(%0000000) + .byte px(%0100011),px(%0001000),px(%1001000),px(%1100000) + .byte px(%0100100),px(%1001010),px(%1001000),px(%0011000) + .byte px(%0100111),px(%1001010),px(%1001000),px(%0000110) + .byte px(%0100100),px(%1000101),px(%0001111),px(%1111110) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100011),px(%1111111),px(%1111111),px(%1100010) + .byte px(%0100011),px(%0010010),px(%0100100),px(%1100010) + .byte px(%0100011),px(%1111111),px(%1111111),px(%1100010) + .byte px(%0100011),px(%0010010),px(%0100100),px(%1100010) + .byte px(%0100011),px(%1111111),px(%1111111),px(%1100010) + .byte px(%0100011),px(%0010010),px(%0100100),px(%1100010) + .byte px(%0100011),px(%1111111),px(%1111111),px(%1100010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + + .byte px(%0111111),px(%1111111),px(%1111100),px(%0000000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%0000000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1100000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + +aw_db_icon: + .byte px(%0111111),px(%1111111),px(%1111100),px(%0000000) + .byte px(%0100000),px(%0000000),px(%0001011),px(%0000000) + .byte px(%0100011),px(%0001000),px(%1001000),px(%1100000) + .byte px(%0100100),px(%1001010),px(%1001000),px(%0011000) + .byte px(%0100111),px(%1001010),px(%1001000),px(%0000110) + .byte px(%0100100),px(%1000101),px(%0001111),px(%1111110) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100111),px(%1100111),px(%0011100),px(%1110010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100111),px(%1111111),px(%1111111),px(%1110010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100111),px(%1100111),px(%0011100),px(%1110010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0100111),px(%1100111),px(%0011100),px(%1110010) + .byte px(%0100000),px(%0000000),px(%0000000),px(%0000010) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + + + .byte px(%0111111),px(%1111111),px(%1111100),px(%0000000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%0000000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1100000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111000) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + .byte px(%0111111),px(%1111111),px(%1111111),px(%1111110) + + PAD_TO $8800 ;;; ============================================================ @@ -3042,6 +3181,7 @@ str_on_system_disk: show_alert_indirection: jmp show_alert_dialog +;;; TODO: Dedupe with alert_bitmap2 in desktop_res alert_bitmap: .byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000) .byte px(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000) diff --git a/desktop/desktop_res.s b/desktop/desktop_res.s index d183a3d..8f3ca68 100644 --- a/desktop/desktop_res.s +++ b/desktop/desktop_res.s @@ -1426,18 +1426,34 @@ icon_entries: .org $FB00 - num_file_types = 8 + num_file_types = 12 type_table: .byte FT_TYPELESS, FT_SRC, FT_TEXT, FT_BINARY - .byte FT_DIRECTORY, FT_SYSTEM, FT_BASIC, FT_BAD + .byte FT_DIRECTORY, FT_SYSTEM, FT_BASIC, FT_GRAPHICS + .byte FT_AW_DB, FT_AW_WP, FT_AW_SS + .byte FT_BAD icon_type_table: - .byte $50,$50,$50,$20,$00,$10,$30,$10 + ;; Bit 4-6 in IconEntry::win_type: + ;; 000 = directory + ;; 001 = system + ;; 010 = binary (maybe runnable) + ;; 011 = basic + ;; 100 = (unused) + ;; 101 = data (text/generic/...) + ;; 110 = (unused) + ;; 111 = trash + .byte $50,$50,$50,$20 + .byte $00,$10,$30,$50 + .byte $50,$50,$50 + .byte $10 type_names_table: .byte " ???", " SRC", " TXT", " BIN" - .byte " DIR", " SYS", " BAS", " BAD" + .byte " DIR", " SYS", " BAS", " FOT" + .byte " AWD", " AWW", " AWS" + .byte " BAD" ;;; The icon-related tables (below) use a distinguishing icon ;;; for "apps" (SYS files with ".SYSTEM" name suffix). This is @@ -1445,10 +1461,14 @@ type_names_table: ;;; lookup into |type_table| finds the last slot. type_icons_table: - .addr gen, src, txt, bin, dir, sys, bas, app + .addr gen, src, txt, bin, dir, sys, bas, fot + .addr aw_db, aw_wp, aw_ss + .addr app type_deltay_table: - .byte 2, 2, 2, 2, 6, 0, 2, 0 + .byte 2, 2, 2, 2, 6, 0, 2, 6 + .byte 2, 2, 2 + .byte 0 .macro DEFICON mapbits, mapwidth, x1, y1, x2, y2 .addr mapbits @@ -1464,6 +1484,10 @@ bin: DEFICON binary_icon, 4, 0, 0, 27, 14 dir: DEFICON folder_icon, 4, 0, 0, 27, 11 sys: DEFICON sys_icon, 4, 0, 0, 27, 17 bas: DEFICON basic_icon, 4, 0, 0, 27, 14 +fot: DEFICON desktop_aux::graphics_icon, 4, 0, 0, 27, 11 +aw_db: DEFICON desktop_aux::aw_db_icon, 4, 0, 0, 27, 15 +aw_wp: DEFICON desktop_aux::aw_wp_icon, 4, 0, 0, 27, 15 +aw_ss: DEFICON desktop_aux::aw_ss_icon, 4, 0, 0, 27, 15 app: DEFICON app_icon, 5, 0, 0, 34, 16 ;;; Generic diff --git a/inc/prodos.inc b/inc/prodos.inc index 81557a3..fc97e67 100644 --- a/inc/prodos.inc +++ b/inc/prodos.inc @@ -94,7 +94,11 @@ FT_TYPELESS = $00 FT_BAD = $01 FT_TEXT = $04 FT_BINARY = $06 +FT_GRAPHICS = $08 FT_DIRECTORY = $0F +FT_AW_DB = $19 +FT_AW_WP = $1A +FT_AW_SS = $1B FT_SRC = $B0 ; IIgs system type; re-used? FT_S16 = $B3 ; IIgs Application Program FT_BASIC = $FC