From ad71d77c3d79cf9b24af60029f5ade9bfe14b1ba Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Fri, 1 Jun 2018 18:52:26 -0700 Subject: [PATCH] Character masks, and sort directory DA identifications --- desk.acc/calculator.s | 2 +- desk.acc/show.text.file.s | 4 ++-- desk.acc/sort.directory.s | 46 ++++++++++++++++++++------------------- desktop/desktop_aux.s | 2 +- desktop/desktop_main.s | 26 +++++++++++----------- desktop/loader.s | 2 +- desktop/mgtk.s | 6 ++--- desktop/ovl1b.s | 10 ++++----- desktop/ovl2.s | 10 ++++----- desktop/ovl3.s | 10 ++++----- desktop/ovl4.s | 12 +++++----- desktop/ovl5.s | 2 +- desktop/ovl7.s | 2 +- desktop/sys.s | 12 +++++----- inc/apple2.inc | 3 +++ 15 files changed, 77 insertions(+), 72 deletions(-) diff --git a/desk.acc/calculator.s b/desk.acc/calculator.s index 67a277c..5ff987e 100644 --- a/desk.acc/calculator.s +++ b/desk.acc/calculator.s @@ -1218,7 +1218,7 @@ trydiv: cmp #'/' ; Divide? ldxy #btn_9::port jmp do_digit_click -: cmp #$7F ; Delete? +: cmp #CHAR_DELETE ; Delete? bne end ldy calc_l beq end diff --git a/desk.acc/show.text.file.s b/desk.acc/show.text.file.s index b4281d3..28e6e53 100644 --- a/desk.acc/show.text.file.s +++ b/desk.acc/show.text.file.s @@ -1041,12 +1041,12 @@ loop: lda L0945 : jsr ensure_page_buffered more: ldy drawtext_params::textlen lda (ptr),y - and #$7F ; clear high bit + and #CHAR_MASK sta (ptr),y inc L0945 cmp #CHAR_RETURN beq finish_text_run - cmp #' ' ; space character + cmp #' ' bne :+ sty L0F9B pha diff --git a/desk.acc/sort.directory.s b/desk.acc/sort.directory.s index 1916aae..4c0f4c9 100644 --- a/desk.acc/sort.directory.s +++ b/desk.acc/sort.directory.s @@ -12,9 +12,8 @@ .org $800 -CHAR_MASK := $7F -CASE_MASK := $DF - +dir_data_buffer := $0E00 +dir_data_buffer_len := $0E00 ;;; ============================================================ @@ -139,8 +138,8 @@ on_line_buffer: .byte 0 io_buf := $1C00 - buffer := $0E00 - buffer_len := $0E00 + buffer := dir_data_buffer + buffer_len := dir_data_buffer_len DEFINE_OPEN_PARAMS open_params, path_buf, io_buf DEFINE_READ_PARAMS read_params, buffer, buffer_len @@ -366,14 +365,14 @@ L0AE5: return #$FF ;;; ============================================================ .proc L0AE8 - lda #$00 + lda #0 sta L0B15 jsr L0B40 jsr L0B16 L0AF3: copy16 $06, $08 jsr L0B16 bcs L0B0F - jsr L0B5E + jsr compare_file_entries bcc L0AF3 jsr swap_entries lda #$FF @@ -420,9 +419,9 @@ rtcs: sec ;;; ============================================================ -L0B40: lda #$01 +L0B40: lda #1 sta L0AAF - copy16 #$0E04, $06 + copy16 #dir_data_buffer + 4, $06 rts ;;; ============================================================ @@ -445,30 +444,33 @@ loop: lda (ptr1),y .endproc ;;; ============================================================ +;;; Compare file entries ($06, $08); order returned in carry. -.proc L0B5E +;;; Uses compare_selection_orders, compare_file_entry_names, +;;; and compare_entry_types_and_names as appropriate. + +.proc compare_file_entries ptr1 := $06 ptr2 := $08 ldy #0 lda (ptr1),y and #STORAGE_TYPE_MASK ; Active file entry? - bne L0B69 + bne :+ jmp rtcc -L0B69: lda (ptr2),y +: lda (ptr2),y and #STORAGE_TYPE_MASK ; Active file entry? - bne L0B72 + bne :+ jmp rtcs -L0B72: lda selected_file_count - beq L0B7F +: lda selected_file_count + beq :+ lda path_index - beq L0B7F + beq :+ jmp compare_selection_orders -L0B7F: - ldax ptr2 +: ldax ptr2 jsr check_system_file bcc rtcc @@ -559,7 +561,7 @@ type: .byte 0 ldx selected_file_count loop: dex - bmi L0C4A + bmi done1 ;; Look up next icon, compare length. lda selected_file_list,x @@ -600,11 +602,11 @@ next: iny ; skip leading space cpy #0 bne next -L0C4A: stx match ; match, or $FF if none +done1: stx match ; match, or $FF if none ldx selected_file_count loop2: dex - bmi L0CA2 + bmi done2 ;; Look up next icon, compare length. lda selected_file_list,x @@ -645,7 +647,7 @@ next2: iny cpy #0 bne next2 -L0CA2: stx match2 ; match, or $FF if none +done2: stx match2 ; match, or $FF if none lda match and match2 diff --git a/desktop/desktop_aux.s b/desktop/desktop_aux.s index 8588001..445557d 100644 --- a/desktop/desktop_aux.s +++ b/desktop/desktop_aux.s @@ -3404,7 +3404,7 @@ LBB87: MGTK_RELAY2_CALL MGTK::GetEvent, event_params LBB9A: cmp #MGTK::event_kind_key_down bne LBB87 lda event_key - and #$7F + and #CHAR_MASK bit alert_action bpl LBBEE cmp #CHAR_ESCAPE diff --git a/desktop/desktop_main.s b/desktop/desktop_main.s index 1f10d94..b6ebeee 100644 --- a/desktop/desktop_main.s +++ b/desktop/desktop_main.s @@ -1071,7 +1071,7 @@ L484B: lda ($06),y bcc L4859 cmp #'z'+1 bcs L4859 - and #$DF ; make upper-case + and #CASE_MASK sta ($06),y L4859: dey bne L484B @@ -1430,15 +1430,15 @@ L4AEA: jsr L4B5F sta L4BB1 tay L4B81: lda ($06),y - and #$7F + and #CHAR_MASK cmp #'/' beq L4B8C dey bne L4B81 L4B8C: dey L4B8D: lda ($06),y - and #$7F - cmp #$2F + and #CHAR_MASK + cmp #'/' beq L4B98 dey bne L4B8D @@ -2675,7 +2675,7 @@ L5584: jsr get_event jmp L55D1 L5595: lda event_params+1 - and #$7F + and #CHAR_MASK cmp #CHAR_RETURN beq L55D1 cmp #CHAR_ESCAPE @@ -2866,7 +2866,7 @@ L5732: jsr get_event jmp L578B L5743: lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_RETURN beq L578B cmp #CHAR_ESCAPE @@ -8141,7 +8141,7 @@ done: rts ;; Ignore punctuation : lda (ptr),y - and #$7F + and #CHAR_MASK cmp #'/' beq skip cmp #' ' @@ -8154,7 +8154,7 @@ skip: dey ;; Look at previous character - is it a letter? check: iny lda (ptr),y - and #$7F + and #CHAR_MASK cmp #'A' bcc :+ cmp #'Z' + 1 @@ -11703,7 +11703,7 @@ LA6F7: jsr LB9B8 cmp #MGTK::event_modifier_solid_apple bne LA71A lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_LEFT bne LA710 jmp LA815 @@ -11715,7 +11715,7 @@ LA710: cmp #CHAR_RIGHT LA717: return #$FF LA71A: lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_LEFT bne LA72E bit LD8ED @@ -11917,7 +11917,7 @@ jump_relay: cmp #MGTK::event_kind_key_down bne :- lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_ESCAPE beq close cmp #CHAR_RETURN @@ -13317,7 +13317,7 @@ loop: dey done: rts : lda (ptr),y - and #$7F + and #CHAR_MASK cmp #'/' beq :+ cmp #'.' @@ -13328,7 +13328,7 @@ done: rts check_alpha: iny lda (ptr),y - and #$7F + and #CHAR_MASK cmp #'A' bcc :+ cmp #'Z'+1 diff --git a/desktop/loader.s b/desktop/loader.s index ae1d5f1..86aa068 100644 --- a/desktop/loader.s +++ b/desktop/loader.s @@ -187,7 +187,7 @@ prompt_for_system_disk: wait: sta KBDSTRB : lda KBD bpl :- - and #$7F + and #CHAR_MASK cmp #$0D ; Return bne wait jmp start diff --git a/desktop/mgtk.s b/desktop/mgtk.s index 37b25f1..8ef2565 100644 --- a/desktop/mgtk.s +++ b/desktop/mgtk.s @@ -5203,7 +5203,7 @@ irq_entry: lda KBD bpl end ; no key - and #$7F + and #CHAR_MASK sta input::key bit KBDSTRB ; clear strobe @@ -5940,7 +5940,7 @@ loop: jsr get_menu_item find_by_shortcut: lda find_shortcut - and #$7F + and #CHAR_MASK cmp curmenuitem::shortcut1 beq :+ cmp curmenuitem::shortcut2 @@ -9411,7 +9411,7 @@ no_modifiers: lda KBD bpl :+ stx KBDSTRB - and #$7F + and #CHAR_MASK sec : rts .endproc diff --git a/desktop/ovl1b.s b/desktop/ovl1b.s index 9e5a477..7deb4fa 100644 --- a/desktop/ovl1b.s +++ b/desktop/ovl1b.s @@ -1108,7 +1108,7 @@ LD9D1: .byte 0, $A, $C, $10 LD9D5: lda event_modifiers bne LD9E6 lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_ESCAPE beq LD9E6 jmp LDBFC @@ -1287,7 +1287,7 @@ LDBF3: .addr 0 .endproc LDBFC: lda event_key - and #$7F + and #CHAR_MASK cmp #'D' beq LDC09 cmp #'d' @@ -1738,7 +1738,7 @@ LE10A: dey LE10F: rts LE110: lda ($0A),y - and #$7F + and #CHAR_MASK cmp #'/' beq LE11C cmp #'.' @@ -1748,7 +1748,7 @@ LE11C: dey LE120: iny lda ($0A),y - and #$7F + and #CHAR_MASK cmp #'A' bcc LE132 cmp #'Z'+1 @@ -2850,7 +2850,7 @@ LED42: jmp LED79 LED58: cmp #MGTK::event_kind_key_down bne LED35 lda event_key - and #$7F + and #CHAR_MASK bit LE941 bmi LED69 jmp LEDE2 diff --git a/desktop/ovl2.s b/desktop/ovl2.s index b769a47..7b699bf 100644 --- a/desktop/ovl2.s +++ b/desktop/ovl2.s @@ -1182,7 +1182,7 @@ L1307: sta L124A sty $06+1 ldy #$01 lda ($06),y - and #$7F + and #CHAR_MASK cmp #'/' bne L132C dey @@ -1196,7 +1196,7 @@ L132C: ldy #0 lda ($06),y tay : lda ($06),y - and #$7F + and #CHAR_MASK sta L14E5,y dey bpl :- @@ -1422,11 +1422,11 @@ L1900: stx $06+1 lda ($06),y tay L1909: lda ($06),y - cmp #$61 + cmp #'a' bcc L1917 - cmp #$7B + cmp #'z'+1 bcs L1917 - and #$DF + and #CASE_MASK sta ($06),y L1917: dey bpl L1909 diff --git a/desktop/ovl3.s b/desktop/ovl3.s index 5e0f7bb..e5ef21e 100644 --- a/desktop/ovl3.s +++ b/desktop/ovl3.s @@ -788,7 +788,7 @@ L9822: lda event_modifiers bne :+ return #$FF : lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_LEFT bne :+ @@ -1509,15 +1509,15 @@ L9E74: sta L9EBF sta L9EC0 tay L9E90: lda ($06),y - and #$7F - cmp #$2F + and #CHAR_MASK + cmp #'/' beq L9E9B dey bne L9E90 L9E9B: dey L9E9C: lda ($06),y - and #$7F - cmp #$2F + and #CHAR_MASK + cmp #'/' beq L9EA7 dey bne L9E9C diff --git a/desktop/ovl4.s b/desktop/ovl4.s index fd87fa8..6c5bec9 100644 --- a/desktop/ovl4.s +++ b/desktop/ovl4.s @@ -583,7 +583,7 @@ L567F: lda #$00 jmp L56E1 L568C: lda path_buf,x - and #$7F + and #CHAR_MASK cmp #'/' beq L569B dex @@ -876,7 +876,7 @@ L59B8: rts ;; With modifiers lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_LEFT bne :+ @@ -910,7 +910,7 @@ L59E4: cmp #'0' ;;; Key - without modifiers L59F7: lda event_key - and #$7F + and #CHAR_MASK cmp #CHAR_LEFT bne :+ @@ -1679,7 +1679,7 @@ loop: dey bpl :+ done: rts : lda ($0A),y - and #$7F ; convert to ASCII + and #CHAR_MASK ; convert to ASCII cmp #'/' beq next cmp #'.' @@ -1689,7 +1689,7 @@ next: dey check: iny lda ($0A),y - and #$7F + and #CHAR_MASK cmp #'A' bcc L615D cmp #'Z'+1 @@ -2014,7 +2014,7 @@ L64B3: ldy #$00 lda ($06),y tay L64B8: lda ($06),y - and #$7F + and #CHAR_MASK cmp #'.' beq L64D8 cmp #'/' diff --git a/desktop/ovl5.s b/desktop/ovl5.s index f68c903..d95ff45 100644 --- a/desktop/ovl5.s +++ b/desktop/ovl5.s @@ -133,7 +133,7 @@ L7137: lda $5028,x ldx path_buf0 beq L7178 L7156: lda path_buf0,x - and #$7F + and #CHAR_MASK cmp #'/' beq L7162 dex diff --git a/desktop/ovl7.s b/desktop/ovl7.s index c025197..5d166c9 100644 --- a/desktop/ovl7.s +++ b/desktop/ovl7.s @@ -414,7 +414,7 @@ L74F4: lda winfo_entrydlg rts L7500: lda event_key - and #$7F + and #CHAR_MASK cmp #'1' bne L750C jmp L73FE diff --git a/desktop/sys.s b/desktop/sys.s index 08ba898..e55eb45 100644 --- a/desktop/sys.s +++ b/desktop/sys.s @@ -573,7 +573,7 @@ loop: iny loop: lda IN,y cmp #$80|CHAR_RETURN beq done - and #$7F + and #CHAR_MASK sta buffer+1,y iny jmp loop @@ -1296,7 +1296,7 @@ L346F: .byte 0 loop: lda IN,y cmp #$80|CHAR_RETURN beq done - and #$7F + and #CHAR_MASK sta path2+1,y iny jmp loop @@ -1887,7 +1887,7 @@ read: sta read_params::ref_num ldy L324A : lda L324A,y - and #$7F + and #CHAR_MASK cmp #'/' beq L38D2 dey @@ -1896,7 +1896,7 @@ read: sta read_params::ref_num L38D2: dey sty L324A L38D6: lda L324A,y - and #$7F + and #CHAR_MASK cmp #'/' beq :+ dey @@ -2016,7 +2016,7 @@ str_not_completed: sta KBDSTRB loop: lda KBD bpl loop - and #$7F + and #CHAR_MASK sta KBDSTRB cmp #'M' beq monitor @@ -2069,7 +2069,7 @@ done: rts lda KBD bpl wait_enter_escape sta KBDSTRB - and #$7F + and #CHAR_MASK cmp #CHAR_ESCAPE beq done cmp #CHAR_RETURN diff --git a/inc/apple2.inc b/inc/apple2.inc index 7e81ca3..3156cc9 100644 --- a/inc/apple2.inc +++ b/inc/apple2.inc @@ -249,6 +249,9 @@ MOUSE_MODE := $0738 ;;; Character Constants (Screen/Key Codes) ;;; ============================================================ +CHAR_MASK := $7F +CASE_MASK := $DF + CHAR_CTRL_C := $03 CHAR_LEFT := $08 CHAR_TAB := $09