diff --git a/desktop/desktop.s b/desktop/desktop.s index e44b7bf..afe3fdf 100644 --- a/desktop/desktop.s +++ b/desktop/desktop.s @@ -3119,6 +3119,16 @@ file_menu: DEFINE_MENU_ITEM label_eject, 'E', 'e' DEFINE_MENU_ITEM label_quit, 'Q', 'q' + menu_item_id_new_folder := 1 + menu_item_id_open := 3 + menu_item_id_close := 4 + menu_item_id_close_all := 5 + menu_item_id_select_all := 6 + menu_item_id_copy_file := 8 + menu_item_id_delete_file := 9 + menu_item_id_eject := 11 + menu_item_id_quit := 12 + view_menu: DEFINE_MENU 5 DEFINE_MENU_ITEM label_by_icon, 'J', 'j' @@ -3127,6 +3137,12 @@ view_menu: DEFINE_MENU_ITEM label_by_size, 'K', 'k' DEFINE_MENU_ITEM label_by_type, 'L', 'l' + menu_item_id_view_by_icon := 1 + menu_item_id_view_by_name := 2 + menu_item_id_view_by_date := 3 + menu_item_id_view_by_size := 4 + menu_item_id_view_by_type := 5 + special_menu: DEFINE_MENU 13 DEFINE_MENU_ITEM label_check_drives @@ -3143,6 +3159,16 @@ special_menu: DEFINE_MENU_SEPARATOR DEFINE_MENU_ITEM label_rename_icon + menu_item_id_check_drives := 1 + menu_item_id_format_disk := 3 + menu_item_id_erase_disk := 4 + menu_item_id_disk_copy := 5 + menu_item_id_lock := 7 + menu_item_id_unlock := 8 + menu_item_id_get_info := 10 + menu_item_id_get_size := 11 + menu_item_id_rename_icon := 13 + .addr $0000,$0000 .assert * = $AD58, error, "Segment length mismatch" @@ -6143,6 +6169,8 @@ L42C3: .byte 0 .proc handle_keydown_impl + ;; Keep in sync with desktop_aux::menu_item_id_* + ;; jump table for menu item handlers dispatch_table: ;; Apple menu (1) @@ -6212,8 +6240,8 @@ dispatch_table: ;; no menu 7 ?? .addr cmd_check_drives ; duplicate??? - .addr cmd_noop ; -------- - .addr L59A0 ; ??? + .addr cmd_noop ; -------- + .addr L59A0 ; ??? .addr L59A0 .addr L59A0 .addr L59A0 @@ -6278,10 +6306,10 @@ L43A1: sta $E25D menu_dispatch2: ldx menu_click_params::menu_id - bne L43B3 + bne :+ rts -L43B3: dex ; x has top level menu id +: dex ; x has top level menu id lda offset_table,x tax ldy menu_click_params::item_num @@ -10374,13 +10402,13 @@ disable_menu_items: sta disableitem_params::disable lda #menu_id_file sta disableitem_params::menu_id - lda #1 ; > New Folder + lda #desktop_aux::menu_item_id_new_folder sta disableitem_params::menu_item MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params - lda #4 ; > Close + lda #desktop_aux::menu_item_id_close sta disableitem_params::menu_item MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params - lda #5 ; > Close All + lda #desktop_aux::menu_item_id_close_all sta disableitem_params::menu_item MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params @@ -10410,19 +10438,19 @@ check_menu_items: sta disableitem_params::disable lda #menu_id_file sta disableitem_params::menu_id - lda #3 ; > Open + lda #desktop_aux::menu_item_id_open jsr disable_menu_item lda #menu_id_special sta disableitem_params::menu_id - lda #7 ; > Lock + lda #desktop_aux::menu_item_id_lock jsr disable_menu_item - lda #8 ; > Unlock + lda #desktop_aux::menu_item_id_unlock jsr disable_menu_item - lda #10 ; > Get Info + lda #desktop_aux::menu_item_id_get_info jsr disable_menu_item - lda #11 ; > Get Size + lda #desktop_aux::menu_item_id_get_size jsr disable_menu_item - lda #13 ; > Rename Icon + lda #desktop_aux::menu_item_id_rename_icon jsr disable_menu_item rts @@ -10439,19 +10467,19 @@ disable_menu_item: sta disableitem_params::disable lda #menu_id_file sta disableitem_params::menu_id - lda #3 ; > Open + lda #desktop_aux::menu_item_id_open jsr enable_menu_item lda #menu_id_special sta disableitem_params::menu_id - lda #7 ; > Lock + lda #desktop_aux::menu_item_id_lock jsr enable_menu_item - lda #8 ; > Unlock + lda #desktop_aux::menu_item_id_unlock jsr enable_menu_item - lda #10 ; > Get Info + lda #desktop_aux::menu_item_id_get_info jsr enable_menu_item - lda #11 ; > Get Size + lda #desktop_aux::menu_item_id_get_size jsr enable_menu_item - lda #13 ; > Rename Icon + lda #desktop_aux::menu_item_id_rename_icon jsr enable_menu_item rts @@ -19584,18 +19612,20 @@ done: rts ;;; ================================================== -LB9B8: MGTK_RELAY_CALL MGTK::ScreenToWindow, event_params +.proc LB9B8 + MGTK_RELAY_CALL MGTK::ScreenToWindow, event_params MGTK_RELAY_CALL MGTK::MoveTo, $D20D MGTK_RELAY_CALL MGTK::InRect, rect1 cmp #MGTK::inrect_inside - beq LB9D8 + beq :+ rts -LB9D8: jsr measure_path_buf1 +: jsr measure_path_buf1 stax $06 cmp16 $D20D, $06 bcs LB9EE jmp LBA83 +.endproc .proc LB9EE ptr := $6 @@ -19621,7 +19651,8 @@ LBA10: MGTK_RELAY_CALL MGTK::TextWidth, ptr jmp LBB05 .endproc -LBA42: lda $08 +.proc LBA42 + lda $08 cmp path_buf2 bcc LBA4F dec path_buf2 @@ -19653,7 +19684,7 @@ LBA6C: lda path_buf2,x LBA7C: dey sty path_buf2 jmp LBB05 - +.endproc .proc LBA83 params := $6 @@ -19675,7 +19706,8 @@ LBA7C: dey jmp LBC5E .endproc -LBABF: inc $08 +.proc LBABF + inc $08 ldy #$00 ldx $08 LBAC5: cpx path_buf1 @@ -19707,6 +19739,9 @@ LBAF7: lda $D3C1,y bpl LBAF7 lda $08 sta path_buf1 + ;; fall through +.endproc + LBB05: jsr draw_filename_prompt rts @@ -20193,8 +20228,10 @@ start: lda LCBANK1 lda LCBANK1 sta SET80COL + stx startdesktop_params::machine sty startdesktop_params::subid + cpy #0 beq is_iic ; Now identify/store specific machine type. bit iigs_flag ; (number is used in double-click timer) @@ -21082,7 +21119,7 @@ data_buffer: .addr desktop_main::sys_start_path str_system_start: PASCAL_STRING "System/Start" .proc L0EE1 - lda #$00 + lda #0 sta desktop_main::sys_start_flag jsr desktop_main::get_LD3FF cmp #$80 @@ -21123,7 +21160,7 @@ config_toolkit: MGTK_RELAY_CALL MGTK::CheckEvents MGTK_RELAY_CALL MGTK::SetMenu, desktop_aux::desktop_menu MGTK_RELAY_CALL MGTK::SetCursor, pointer_cursor - lda #$00 + lda #0 sta $EC25 jsr desktop_main::L66A2 jsr desktop_main::disable_eject_menu_item