Add Special > Check Drive command. Fixes #97

This commit is contained in:
Joshua Bell 2018-12-27 21:15:02 -08:00
parent 8c1c184549
commit 4cf8ab90ab
3 changed files with 44 additions and 25 deletions

View File

@ -7,6 +7,7 @@
* Current time shown on right side of menu bar, if system has a clock. (#7) * Current time shown on right side of menu bar, if system has a clock. (#7)
* Up to 13 volumes are shown on the desktop. (#20) * Up to 13 volumes are shown on the desktop. (#20)
* Up to 12 Desk Accessories are shown in the menu. (#90) * Up to 12 Desk Accessories are shown in the menu. (#90)
* Add Special > Check Drive command to refresh a single drive. (#97)
* Show Text File DA: Keyboard support. Escape quits, arrows scroll. (#4) * Show Text File DA: Keyboard support. Escape quits, arrows scroll. (#4)
* Icon bitmap improvements. (#74) * Icon bitmap improvements. (#74)

View File

@ -2718,8 +2718,10 @@ label_by_size:
label_by_type: label_by_type:
PASCAL_STRING "By Type" PASCAL_STRING "By Type"
label_check_drives: label_check_all_drives:
PASCAL_STRING "Check Drives" PASCAL_STRING "Check All Drives"
label_check_drive:
PASCAL_STRING "Check Drive"
label_format_disk: label_format_disk:
PASCAL_STRING "Format a Disk ..." PASCAL_STRING "Format a Disk ..."
label_erase_disk: label_erase_disk:
@ -2786,8 +2788,9 @@ view_menu:
menu_item_id_view_by_type := 5 menu_item_id_view_by_type := 5
special_menu: special_menu:
DEFINE_MENU 13 DEFINE_MENU 14
DEFINE_MENU_ITEM label_check_drives DEFINE_MENU_ITEM label_check_all_drives
DEFINE_MENU_ITEM label_check_drive
DEFINE_MENU_SEPARATOR DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_format_disk, 'S', 's' DEFINE_MENU_ITEM label_format_disk, 'S', 's'
DEFINE_MENU_ITEM label_erase_disk, 'Z', 'z' DEFINE_MENU_ITEM label_erase_disk, 'Z', 'z'
@ -2801,15 +2804,16 @@ special_menu:
DEFINE_MENU_SEPARATOR DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_rename_icon DEFINE_MENU_ITEM label_rename_icon
menu_item_id_check_drives := 1 menu_item_id_check_all := 1
menu_item_id_format_disk := 3 menu_item_id_check_drive := 2
menu_item_id_erase_disk := 4 menu_item_id_format_disk := 4
menu_item_id_disk_copy := 5 menu_item_id_erase_disk := 5
menu_item_id_lock := 7 menu_item_id_disk_copy := 6
menu_item_id_unlock := 8 menu_item_id_lock := 8
menu_item_id_get_info := 10 menu_item_id_unlock := 9
menu_item_id_get_size := 11 menu_item_id_get_info := 11
menu_item_id_rename_icon := 13 menu_item_id_get_size := 12
menu_item_id_rename_icon := 14
.addr $0000,$0000 .addr $0000,$0000

View File

@ -396,6 +396,7 @@ dispatch_table:
;; Special menu (5) ;; Special menu (5)
menu5_start := * menu5_start := *
.addr cmd_check_drives .addr cmd_check_drives
.addr cmd_check_drive
.addr cmd_noop ; -------- .addr cmd_noop ; --------
.addr cmd_format_disk .addr cmd_format_disk
.addr cmd_erase_disk .addr cmd_erase_disk
@ -2088,9 +2089,17 @@ L504F: .byte 0
;;; ============================================================ ;;; ============================================================
.proc cmd_eject .proc cmd_check_or_eject
buffer := $1800 buffer := $1800
eject:
lda #$80
bne common ; always
check: lda #0
common: sta eject_flag
;; Ensure that volumes are selected ;; Ensure that volumes are selected
lda selected_window_index lda selected_window_index
beq :+ beq :+
@ -2121,7 +2130,10 @@ loop1: lda selected_icon_list,y
stx count stx count
;; Do the ejection ;; Do the ejection
bit eject_flag
bpl :+
jsr jt_eject jsr jt_eject
:
;; Check each of the recorded volumes ;; Check each of the recorded volumes
loop2: ldx count loop2: ldx count
@ -2136,7 +2148,11 @@ loop2: ldx count
count: .byte 0 count: .byte 0
eject_flag:
.byte 0
.endproc .endproc
cmd_eject := cmd_check_or_eject::eject
cmd_check_drive := cmd_check_or_eject::check
;;; ============================================================ ;;; ============================================================
@ -4711,20 +4727,20 @@ enable_menu_item:
.proc toggle_eject_menu_item .proc toggle_eject_menu_item
enable: enable:
lda #MGTK::disableitem_enable copy #MGTK::disableitem_enable, disableitem_params::disable
sta disableitem_params::disable
jmp :+ jmp :+
disable: disable:
lda #MGTK::disableitem_disable copy #MGTK::disableitem_disable, disableitem_params::disable
sta disableitem_params::disable
: lda #menu_id_file : copy #menu_id_file, disableitem_params::menu_id
sta disableitem_params::menu_id copy #desktop_aux::menu_item_id_eject, disableitem_params::menu_item
lda #11 ; > Eject
sta disableitem_params::menu_item
MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params
copy #menu_id_special, disableitem_params::menu_id
copy #desktop_aux::menu_item_id_check_drive, disableitem_params::menu_item
MGTK_RELAY_CALL MGTK::DisableItem, disableitem_params
rts rts
.endproc .endproc
@ -6880,8 +6896,6 @@ nonzero_flag: ; high bit set once a non-zero digit seen
.endproc ; int_to_string .endproc ; int_to_string
PAD_TO $7B5F
;;; ============================================================ ;;; ============================================================
L7B5F: .word 0 L7B5F: .word 0