mirror of
https://github.com/mi57730/a2d.git
synced 2025-04-08 18:40:10 +00:00
Merge remote-tracking branch 'origin/disasm'
This commit is contained in:
commit
ceaf94851a
@ -925,7 +925,7 @@ L9857: sub16 findwindow_params2::mousex, L9C8E, deltax
|
||||
lda deltax+1
|
||||
bpl x_lo
|
||||
lda deltax
|
||||
cmp #($100 - drag_delta)
|
||||
cmp #AS_BYTE(-drag_delta)
|
||||
bcc is_drag
|
||||
jmp check_deltay
|
||||
x_lo: lda deltax
|
||||
@ -937,7 +937,7 @@ check_deltay:
|
||||
lda deltay+1
|
||||
bpl y_lo
|
||||
lda deltay
|
||||
cmp #($100 - drag_delta)
|
||||
cmp #AS_BYTE(-drag_delta)
|
||||
bcc is_drag
|
||||
jmp peek_loop
|
||||
y_lo: lda deltay
|
||||
|
@ -13164,7 +13164,7 @@ exit: return #$FF ; not double-click
|
||||
|
||||
;; is -delta < x < 0 ?
|
||||
lda delta
|
||||
cmp #($100 - double_click_deltax)
|
||||
cmp #AS_BYTE(-double_click_deltax)
|
||||
bcs check_y
|
||||
fail: return #$FF
|
||||
|
||||
@ -13185,7 +13185,7 @@ check_y:
|
||||
|
||||
;; is -delta < y < 0 ?
|
||||
lda delta
|
||||
cmp #($100 - double_click_deltay)
|
||||
cmp #AS_BYTE(-double_click_deltay)
|
||||
bcs ok
|
||||
|
||||
;; is 0 < y < delta ?
|
||||
@ -14772,12 +14772,12 @@ end:
|
||||
;; Does the directory exist?
|
||||
MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params
|
||||
beq :+
|
||||
jmp populate_volume_icons
|
||||
jmp populate_volume_icons_and_device_names
|
||||
|
||||
: lda get_file_info_type
|
||||
cmp #FT_DIRECTORY
|
||||
beq open_dir
|
||||
jmp populate_volume_icons
|
||||
jmp populate_volume_icons_and_device_names
|
||||
|
||||
open_dir:
|
||||
MLI_RELAY_CALL OPEN, open_params
|
||||
@ -14937,7 +14937,9 @@ end:
|
||||
|
||||
;;; TODO: Dedupe with cmd_check_drives
|
||||
|
||||
.proc populate_volume_icons
|
||||
.proc populate_volume_icons_and_device_names
|
||||
devname_ptr := $08
|
||||
|
||||
ldy #0
|
||||
sty desktop_main::pending_alert
|
||||
sty volume_num
|
||||
@ -14946,7 +14948,7 @@ process_volume:
|
||||
lda volume_num
|
||||
asl a
|
||||
tay
|
||||
copy16 slot_drive_string_table,y, $08
|
||||
copy16 device_name_table,y, devname_ptr
|
||||
ldy volume_num
|
||||
lda DEVLST,y
|
||||
|
||||
@ -14985,13 +14987,31 @@ L0D64: cmp #ERR_DUPLICATE_VOLUME
|
||||
lda #$F9 ; "... 2 volumes with the same name..."
|
||||
sta desktop_main::pending_alert
|
||||
|
||||
;; This section populates slot_drive_string_table -
|
||||
;; This section populates device_name_table -
|
||||
;; it determines which device type string to use, and
|
||||
;; fills in slot and drive as appropriate.
|
||||
;;
|
||||
;; This is for a "Check" menu present in MouseDesk 1.1
|
||||
;; but which was removed in MouseDesk 2.0, which allowed
|
||||
;; refreshing individual windows.
|
||||
;; refreshing individual windows. It is also used in the
|
||||
;; Format/Erase disk dialog.
|
||||
;;
|
||||
;; The code is particularly strange, as it attempts
|
||||
;; device identification *three* times: once to figure
|
||||
;; out the template string, again to figure out
|
||||
;; where in the template to put the slot #, and again
|
||||
;; to figure out where to put the drive number. This
|
||||
;; leads to mis-matches e.g. in Virtual II where the
|
||||
;; "Disk II" and "OmniDisk" devices end up with different
|
||||
;; offsets for the same string.
|
||||
;;
|
||||
;; Five device types are assumed by analyzing the low
|
||||
;; nibble of the unit number (per ProDOS 8 TRM, but
|
||||
;; contrary to ProDOS Tech; Note #21):
|
||||
;; * $0 = Disk II
|
||||
;; * $4 = Fixed disk: determines ProFile or RAM disk
|
||||
;; * $B = Removalble disk: assumes UniDisk
|
||||
;; * "other"
|
||||
|
||||
.proc select_template
|
||||
pla
|
||||
@ -15000,12 +15020,17 @@ L0D64: cmp #ERR_DUPLICATE_VOLUME
|
||||
sta unit_number_lo_nibble
|
||||
cmp #DT_DISKII
|
||||
bne :+
|
||||
|
||||
;; Disk II: Use default slot/drive template
|
||||
addr_jump copy_template, str_slot_drive
|
||||
|
||||
: cmp #DT_REMOVABLE
|
||||
beq is_removable
|
||||
|
||||
cmp #DT_PROFILE
|
||||
bne L0DC2
|
||||
bne skip_template ; unknown, use default
|
||||
|
||||
;; Fixed disk: either ProFile or RAM disk
|
||||
pla
|
||||
pha
|
||||
and #$70 ; Compute $CnFB
|
||||
@ -15019,28 +15044,41 @@ L0D64: cmp #ERR_DUPLICATE_VOLUME
|
||||
lda $C7FB ; self-modified
|
||||
and #$01 ; is RAM card?
|
||||
bne :+
|
||||
;; ProFile
|
||||
addr_jump copy_template, str_profile_slot_x
|
||||
|
||||
;; RAM disk
|
||||
: addr_jump copy_template, str_ramcard_slot_x
|
||||
|
||||
is_removable:
|
||||
;; Removable (UniDisk)
|
||||
ldax #str_unidisk_xy
|
||||
.endproc
|
||||
|
||||
copy_template: stax $06
|
||||
.proc copy_template
|
||||
src := $06
|
||||
|
||||
stax src
|
||||
ldy #$00
|
||||
lda ($06),y
|
||||
lda (src),y
|
||||
sta @compare
|
||||
: iny
|
||||
lda ($06),y
|
||||
sta ($08),y
|
||||
lda (src),y
|
||||
sta (devname_ptr),y
|
||||
@compare := *+1
|
||||
cpy #0
|
||||
bne :-
|
||||
tay
|
||||
L0DC2: pla
|
||||
.endproc
|
||||
|
||||
tay ; ???
|
||||
|
||||
skip_template:
|
||||
pla
|
||||
pha
|
||||
|
||||
.scope
|
||||
;; Update string with Slot #
|
||||
|
||||
;; A has unit number
|
||||
and #$70 ; slot (from DSSSxxxx)
|
||||
lsr a
|
||||
@ -15054,6 +15092,7 @@ L0DC2: pla
|
||||
cmp #DT_PROFILE
|
||||
bne check_removable
|
||||
|
||||
;; Fixed disk: either ProFile or RAM disk
|
||||
;; A has unit number (again)
|
||||
pla
|
||||
pha
|
||||
@ -15066,33 +15105,43 @@ L0DC2: pla
|
||||
sta @msb
|
||||
@msb := *+2
|
||||
lda $C7FB ; self-modified
|
||||
and #$01 ; bit 0 = is RAM disk?
|
||||
and #%00000001 ; bit 0 = is RAM disk?
|
||||
bne is_ram_disk
|
||||
|
||||
ldy #$0E
|
||||
bne L0DFA ; always
|
||||
;; ProFile
|
||||
ldy #profile_slot_x_offset
|
||||
bne write ; always
|
||||
|
||||
;; RAM disk
|
||||
is_ram_disk:
|
||||
ldy #$0E
|
||||
bne L0DFA ; always
|
||||
ldy #ramcard_slot_x_offset
|
||||
bne write ; always
|
||||
|
||||
check_removable:
|
||||
cmp #DT_REMOVABLE
|
||||
bne :+
|
||||
ldy #$0F
|
||||
bne L0DFA ; always
|
||||
;; Removable: UniDisk
|
||||
ldy #unidisk_xy_x_offset
|
||||
bne write ; always
|
||||
|
||||
: ldy #$06
|
||||
;; Default (either Disk II or Unknown)
|
||||
: ldy #slot_drive_x_offset
|
||||
|
||||
L0DFA: txa
|
||||
sta ($08),y
|
||||
write: txa
|
||||
sta (devname_ptr),y
|
||||
.endscope
|
||||
|
||||
.scope
|
||||
;; Update string with Drive #
|
||||
|
||||
lda unit_number_lo_nibble
|
||||
and #$0F
|
||||
and #$0F ; low nibble of unit number (unnecessary!)
|
||||
cmp #DT_PROFILE
|
||||
beq L0E21
|
||||
beq done_drive_num ; no drive # for fixed disk (ProFile or RAM disk)
|
||||
pla
|
||||
pha
|
||||
|
||||
;; Compute '1' or '2'
|
||||
rol a ; set carry to drive - 1
|
||||
lda #0
|
||||
adc #1 ; drive = 1 or 2
|
||||
@ -15100,15 +15149,23 @@ L0DFA: txa
|
||||
pha
|
||||
|
||||
lda unit_number_lo_nibble
|
||||
and #DT_RAM
|
||||
bne L0E1C
|
||||
ldy #$10
|
||||
and #$0F ; low nibble of unit number (unnecessary!)
|
||||
bne :+
|
||||
|
||||
;; Disk II
|
||||
ldy #slot_drive_y_offset
|
||||
pla
|
||||
bne L0E1F ; always
|
||||
L0E1C: ldy #$11
|
||||
bne write ; always
|
||||
|
||||
;; Removable (Unidisk) or Otherwise
|
||||
: ldy #unidisk_xy_y_offset ; Minor bug: off-by-one for unknown types
|
||||
pla
|
||||
|
||||
write: sta (devname_ptr),y
|
||||
.endscope
|
||||
|
||||
done_drive_num:
|
||||
pla
|
||||
L0E1F: sta ($08),y
|
||||
L0E21: pla
|
||||
inc volume_num
|
||||
next: lda volume_num
|
||||
|
||||
|
@ -870,9 +870,9 @@ str_clock:
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
slot_drive_string_table:
|
||||
.addr sd0s, sd1s, sd2s, sd3s, sd4s, sd5s, sd6s
|
||||
.addr sd7s, sd8s, sd9s, sd10s, sd11s, sd12s, sd13s
|
||||
device_name_table:
|
||||
.addr dev0s, dev1s, dev2s, dev3s, dev4s, dev5s, dev6s
|
||||
.addr dev7s, dev8s, dev9s, dev10s, dev11s, dev12s, dev13s
|
||||
|
||||
selector_menu_addr:
|
||||
.addr selector_menu
|
||||
@ -1034,24 +1034,25 @@ disable: .byte 0
|
||||
|
||||
LE26F: .byte $00
|
||||
|
||||
;;; Unused - present in MouseDesk 1.1 but not 2.0 or A2D
|
||||
check_menu:
|
||||
DEFINE_MENU 4
|
||||
DEFINE_MENU_ITEM str_all
|
||||
DEFINE_MENU_SEPARATOR
|
||||
DEFINE_MENU_ITEM sd0s
|
||||
DEFINE_MENU_ITEM sd1s
|
||||
DEFINE_MENU_ITEM sd2s
|
||||
DEFINE_MENU_ITEM sd3s
|
||||
DEFINE_MENU_ITEM sd4s
|
||||
DEFINE_MENU_ITEM sd5s
|
||||
DEFINE_MENU_ITEM sd6s
|
||||
DEFINE_MENU_ITEM sd7s
|
||||
DEFINE_MENU_ITEM sd8s
|
||||
DEFINE_MENU_ITEM sd9s
|
||||
DEFINE_MENU_ITEM sd10s
|
||||
DEFINE_MENU_ITEM sd11s
|
||||
DEFINE_MENU_ITEM sd12s
|
||||
DEFINE_MENU_ITEM sd13s
|
||||
DEFINE_MENU_ITEM dev0s
|
||||
DEFINE_MENU_ITEM dev1s
|
||||
DEFINE_MENU_ITEM dev2s
|
||||
DEFINE_MENU_ITEM dev3s
|
||||
DEFINE_MENU_ITEM dev4s
|
||||
DEFINE_MENU_ITEM dev5s
|
||||
DEFINE_MENU_ITEM dev6s
|
||||
DEFINE_MENU_ITEM dev7s
|
||||
DEFINE_MENU_ITEM dev8s
|
||||
DEFINE_MENU_ITEM dev9s
|
||||
DEFINE_MENU_ITEM dev10s
|
||||
DEFINE_MENU_ITEM dev11s
|
||||
DEFINE_MENU_ITEM dev12s
|
||||
DEFINE_MENU_ITEM dev13s
|
||||
|
||||
startup_menu:
|
||||
DEFINE_MENU 7
|
||||
@ -1065,20 +1066,23 @@ startup_menu:
|
||||
|
||||
str_all:PASCAL_STRING "All"
|
||||
|
||||
sd0: DEFINE_STRING "Slot drive ", sd0s
|
||||
sd1: DEFINE_STRING "Slot drive ", sd1s
|
||||
sd2: DEFINE_STRING "Slot drive ", sd2s
|
||||
sd3: DEFINE_STRING "Slot drive ", sd3s
|
||||
sd4: DEFINE_STRING "Slot drive ", sd4s
|
||||
sd5: DEFINE_STRING "Slot drive ", sd5s
|
||||
sd6: DEFINE_STRING "Slot drive ", sd6s
|
||||
sd7: DEFINE_STRING "Slot drive ", sd7s
|
||||
sd8: DEFINE_STRING "Slot drive ", sd8s
|
||||
sd9: DEFINE_STRING "Slot drive ", sd9s
|
||||
sd10: DEFINE_STRING "Slot drive ", sd10s
|
||||
sd11: DEFINE_STRING "Slot drive ", sd11s
|
||||
sd12: DEFINE_STRING "Slot drive ", sd12s
|
||||
sd13: DEFINE_STRING "Slot drive ", sd13s
|
||||
;;; ============================================================
|
||||
|
||||
;;; Device Names (populated at startup using templates below)
|
||||
dev0: DEFINE_STRING "Slot drive ", dev0s
|
||||
dev1: DEFINE_STRING "Slot drive ", dev1s
|
||||
dev2: DEFINE_STRING "Slot drive ", dev2s
|
||||
dev3: DEFINE_STRING "Slot drive ", dev3s
|
||||
dev4: DEFINE_STRING "Slot drive ", dev4s
|
||||
dev5: DEFINE_STRING "Slot drive ", dev5s
|
||||
dev6: DEFINE_STRING "Slot drive ", dev6s
|
||||
dev7: DEFINE_STRING "Slot drive ", dev7s
|
||||
dev8: DEFINE_STRING "Slot drive ", dev8s
|
||||
dev9: DEFINE_STRING "Slot drive ", dev9s
|
||||
dev10: DEFINE_STRING "Slot drive ", dev10s
|
||||
dev11: DEFINE_STRING "Slot drive ", dev11s
|
||||
dev12: DEFINE_STRING "Slot drive ", dev12s
|
||||
dev13: DEFINE_STRING "Slot drive ", dev13s
|
||||
|
||||
startup_menu_item_1: PASCAL_STRING "Slot 0 "
|
||||
startup_menu_item_2: PASCAL_STRING "Slot 0 "
|
||||
@ -1088,17 +1092,35 @@ startup_menu_item_5: PASCAL_STRING "Slot 0 "
|
||||
startup_menu_item_6: PASCAL_STRING "Slot 0 "
|
||||
startup_menu_item_7: PASCAL_STRING "Slot 0 "
|
||||
|
||||
.addr sd0, sd1, sd2, sd3, sd4, sd5, sd6, sd7
|
||||
.addr sd8, sd9, sd10, sd11, sd12, sd13
|
||||
;; Unused???
|
||||
.addr dev0, dev1, dev2, dev3, dev4, dev5, dev6, dev7
|
||||
.addr dev8, dev9, dev10, dev11, dev12, dev13
|
||||
|
||||
;;; Templates used for device names
|
||||
|
||||
;;; Fixed drives that aren't RAM disks
|
||||
str_profile_slot_x:
|
||||
PASCAL_STRING "ProFile Slot x "
|
||||
profile_slot_x_offset = 14
|
||||
|
||||
;;; Removable drives
|
||||
str_unidisk_xy:
|
||||
PASCAL_STRING "UniDisk 3.5 Sx,y "
|
||||
unidisk_xy_x_offset = 15
|
||||
unidisk_xy_y_offset = 17
|
||||
|
||||
;;; RAM disks
|
||||
str_ramcard_slot_x:
|
||||
PASCAL_STRING "RAMCard Slot x "
|
||||
ramcard_slot_x_offset = 14
|
||||
|
||||
;;; Disk II and unknown devices
|
||||
str_slot_drive:
|
||||
PASCAL_STRING "Slot drive "
|
||||
slot_drive_x_offset = 6
|
||||
slot_drive_y_offset = 16 ; off by 1 ???
|
||||
|
||||
;;; ============================================================
|
||||
|
||||
selector_menu:
|
||||
DEFINE_MENU 5
|
||||
|
@ -450,9 +450,9 @@ L0D5A: stax dialog_label_pos
|
||||
L0D60: lda L0D8C
|
||||
asl a
|
||||
tay
|
||||
lda slot_drive_string_table+1,y
|
||||
lda device_name_table+1,y
|
||||
tax
|
||||
lda slot_drive_string_table,y
|
||||
lda device_name_table,y
|
||||
pha
|
||||
lda L0D8C
|
||||
lsr a
|
||||
|
Loading…
x
Reference in New Issue
Block a user