DeskTop: Insertion point fun

This commit is contained in:
Joshua Bell 2018-05-08 20:14:59 -07:00
parent 904ce43d49
commit 2da03912a0
6 changed files with 136 additions and 94 deletions

View File

@ -5,7 +5,7 @@ CCFLAGS = --config asm.cfg
OUTDIR = out OUTDIR = out
HEADERS = $(wildcard ../*.inc) $(wildcard ../inc/*.inc) $(wildcard *.inc) $(OUTDIR)/desktop_res.inc HEADERS = $(wildcard ../*.inc) $(wildcard ../inc/*.inc) $(wildcard *.inc)
SEGMENTS = loader mgtk desktop invoker \ SEGMENTS = loader mgtk desktop invoker \
ovl1 ovl1a ovl1b ovl1c ovl2 ovl34567 ovl1 ovl1a ovl1b ovl1c ovl2 ovl34567
@ -32,10 +32,10 @@ $(OUTDIR)/desktop_res.inc: desktop_res.s desktop_res_builder.s res/build_res_inc
$(OUTDIR)/desktop.o: desktop.s $(HEADERS) desktop_aux.s desktop_lc.s desktop_main.s desktop_res.s $(OUTDIR)/desktop.o: desktop.s $(HEADERS) desktop_aux.s desktop_lc.s desktop_main.s desktop_res.s
$(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $< $(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
$(OUTDIR)/ovl34567.o: ovl34567.s $(HEADERS) ovl3.s ovl4.s ovl5.s ovl6.s ovl7.s $(OUTDIR)/ovl34567.o: ovl34567.s $(HEADERS) $(OUTDIR)/desktop_res.inc ovl3.s ovl4.s ovl5.s ovl6.s ovl7.s
$(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $< $(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
$(OUTDIR)/%.o: %.s $(HEADERS) $(OUTDIR)/%.o: %.s $(HEADERS) $(OUTDIR)/desktop_res.inc
$(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $< $(CC65)/ca65 $(CAFLAGS) --listing $(basename $@).list -o $@ $<
# Built DeskTop segments # Built DeskTop segments

View File

@ -2864,8 +2864,8 @@ all_label_pos: DEFINE_POINT 325,91
.byte $1C,$00,$70,$00 .byte $1C,$00,$70,$00
.byte $1C,$00,$87,$00 .byte $1C,$00,$87,$00
LAE6C: .byte $00 ; text mask textbg_black: .byte $00
LAE6D: .byte $7F ; text mask textbg_white: .byte $7F
press_ok_to_rect: DEFINE_RECT 39,25,360,80 press_ok_to_rect: DEFINE_RECT 39,25,360,80
prompt_rect: DEFINE_RECT 40,60,360,80 prompt_rect: DEFINE_RECT 40,60,360,80

View File

@ -115,7 +115,8 @@ main_loop:
lda #0 lda #0
sta loop_counter sta loop_counter
jsr L4563 ; called every few ticks ??? ;; Poll drives for updates
jsr L4563
beq :+ beq :+
jsr L40E0 ; conditionally ??? jsr L40E0 ; conditionally ???
@ -694,7 +695,7 @@ next: dey
stx L4597 stx L4597
stx L45A0 stx L45A0
jsr L45B2 jsr poll_drive
ldx L45A0 ldx L45A0
beq done beq done
: lda L45A0,x : lda L45A0,x
@ -712,17 +713,19 @@ L4559: lda DEVLST,y
;;; ============================================================ ;;; ============================================================
;;; Determine ejectability?
.proc L4563 .proc L4563
lda L45A0 lda L45A0
beq L4579 beq done
jsr L45B2 jsr poll_drive
ldx L45A0 ldx L45A0
L456E: lda L45A0,x L456E: lda L45A0,x
cmp L45A9,x cmp L45A9,x
bne L457C bne L457C
dex dex
bne L456E bne L456E
L4579: return #0 done: return #0
L457C: lda L45A0,x L457C: lda L45A0,x
sta L45A9,x sta L45A9,x
@ -754,7 +757,9 @@ L45A9: .byte $00,$00,$00,$00,$00,$00,$00,$00
;; Possibly SmartPort STATUS call to determine ejectability ??? ;; Possibly SmartPort STATUS call to determine ejectability ???
.proc L45B2 ;; Called in a polling loop - checking drive status?
.proc poll_drive
ptr := $6 ptr := $6
ldx L4597 ldx L4597
@ -11494,18 +11499,21 @@ dialog_param_addr:
asl a asl a
tax tax
copy16 dialog_proc_table,x, jump_addr copy16 dialog_proc_table,x, jump_addr
lda #0 lda #0
sta LD8EB sta prompt_ip_flag
sta LD8EC sta LD8EC
sta LD8F0 sta LD8F0
sta LD8F1 sta LD8F1
sta LD8F2 sta LD8F2
sta LD8E8 sta has_input_field_flag
sta LD8F5 sta LD8F5
sta LD8ED sta LD8ED
sta cursor_ip_flag sta cursor_ip_flag
lda #$14
sta LD8E9 lda #prompt_insertion_point_blink_count
sta prompt_ip_counter
copy16 #rts1, jump_relay+1 copy16 #rts1, jump_relay+1
jsr set_cursor_pointer jsr set_cursor_pointer
@ -11518,13 +11526,17 @@ dialog_param_addr:
;;; Message handler for OK/Cancel dialog ;;; Message handler for OK/Cancel dialog
.proc prompt_input_loop .proc prompt_input_loop
lda LD8E8 lda has_input_field_flag
beq :+ beq :+
dec LD8E9
;; Blink the insertion point
dec prompt_ip_counter
bne :+ bne :+
jsr LB8F5 jsr redraw_prompt_insertion_point
lda #$14 lda #prompt_insertion_point_blink_count
sta LD8E9 sta prompt_ip_counter
;; Dispatch event types - mouse down, key press
: MGTK_RELAY_CALL MGTK::GetEvent, event_params : MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_kind lda event_kind
cmp #MGTK::event_kind_button_down cmp #MGTK::event_kind_button_down
@ -11535,8 +11547,11 @@ dialog_param_addr:
bne :+ bne :+
jmp prompt_key_handler jmp prompt_key_handler
: lda LD8E8 ;; Does the dialog have an input field?
: lda has_input_field_flag
beq prompt_input_loop beq prompt_input_loop
;; Check if mouse is over input field, change cursor appropriately.
MGTK_RELAY_CALL MGTK::FindWindow, event_coords MGTK_RELAY_CALL MGTK::FindWindow, event_coords
lda findwindow_which_area lda findwindow_which_area
bne :+ bne :+
@ -11547,7 +11562,7 @@ dialog_param_addr:
beq :+ beq :+
jmp prompt_input_loop jmp prompt_input_loop
: lda winfo_alert_dialog : lda winfo_alert_dialog ; Is over this window... but where?
jsr set_port_from_window_id jsr set_port_from_window_id
lda winfo_alert_dialog lda winfo_alert_dialog
sta event_params sta event_params
@ -11559,7 +11574,7 @@ dialog_param_addr:
jsr set_cursor_insertion_point_with_flag jsr set_cursor_insertion_point_with_flag
jmp done jmp done
out: jsr set_cursor_pointer_with_flag out: jsr set_cursor_pointer_with_flag
done: jsr reset_state done: jsr reset_grafport3a
jmp prompt_input_loop jmp prompt_input_loop
.endproc .endproc
@ -11659,7 +11674,7 @@ check_button_cancel:
lda #prompt_button_cancel lda #prompt_button_cancel
: rts : rts
LA6ED: bit LD8E8 LA6ED: bit has_input_field_flag
bmi LA6F7 bmi LA6F7
lda #$FF lda #$FF
jmp jump_relay jmp jump_relay
@ -11788,7 +11803,7 @@ LA7CF: cmp #$7E
LA7D8: ldx path_buf1 LA7D8: ldx path_buf1
beq LA7E5 beq LA7E5
LA7DD: ldx LD8E8 LA7DD: ldx has_input_field_flag
beq LA7E5 beq LA7E5
jsr LBB0B jsr LBB0B
LA7E5: return #$FF LA7E5: return #$FF
@ -11806,17 +11821,17 @@ LA806: jsr set_penmode_xor2
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::all_button_rect MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::all_button_rect
return #prompt_button_all return #prompt_button_all
LA815: lda LD8E8 LA815: lda has_input_field_flag
beq LA81D beq LA81D
jsr LBC5E jsr LBC5E
LA81D: return #$FF LA81D: return #$FF
LA820: lda LD8E8 LA820: lda has_input_field_flag
beq LA828 beq LA828
jsr LBCC9 jsr LBCC9
LA828: return #$FF LA828: return #$FF
LA82B: lda LD8E8 LA82B: lda has_input_field_flag
beq LA83B beq LA83B
bit LD8ED bit LD8ED
bpl LA838 bpl LA838
@ -11825,7 +11840,7 @@ LA82B: lda LD8E8
LA838: jsr LBBA4 LA838: jsr LBBA4
LA83B: return #$FF LA83B: return #$FF
LA83E: lda LD8E8 LA83E: lda has_input_field_flag
beq LA84E beq LA84E
bit LD8ED bit LD8ED
bpl LA84B bpl LA84B
@ -11848,7 +11863,7 @@ LA86F: lda winfo_alert_dialog
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
return #1 return #1
LA88D: lda LD8E8 LA88D: lda has_input_field_flag
beq LA895 beq LA895
jsr LBB63 jsr LBB63
LA895: return #$FF LA895: return #$FF
@ -11897,7 +11912,7 @@ jump_relay:
jmp close jmp close
close: MGTK_RELAY_CALL MGTK::CloseWindow, winfo_about_dialog close: MGTK_RELAY_CALL MGTK::CloseWindow, winfo_about_dialog
jsr reset_state jsr reset_grafport3a
jsr set_cursor_pointer_with_flag jsr set_cursor_pointer_with_flag
rts rts
.endproc .endproc
@ -11928,7 +11943,7 @@ close: MGTK_RELAY_CALL MGTK::CloseWindow, winfo_about_dialog
jmp do5 jmp do5
: lda #0 : lda #0
sta LD8E8 sta has_input_field_flag
jsr open_dialog_window jsr open_dialog_window
addr_call draw_dialog_title, desktop_aux::str_copy_title addr_call draw_dialog_title, desktop_aux::str_copy_title
axy_call draw_dialog_label, 1, desktop_aux::str_copy_copying axy_call draw_dialog_label, 1, desktop_aux::str_copy_copying
@ -11990,7 +12005,7 @@ do2: ldy #1
addr_call draw_text1, str_file_count addr_call draw_text1, str_file_count
rts rts
do5: jsr reset_state do5: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
rts rts
@ -12059,7 +12074,7 @@ LAAB1: jsr prompt_input_loop
jmp do4 jmp do4
else: lda #0 else: lda #0
sta LD8E8 sta has_input_field_flag
jsr open_dialog_window jsr open_dialog_window
addr_call draw_dialog_title, desktop_aux::str_download addr_call draw_dialog_title, desktop_aux::str_download
axy_call draw_dialog_label, 1, desktop_aux::str_copy_copying axy_call draw_dialog_label, 1, desktop_aux::str_copy_copying
@ -12109,7 +12124,7 @@ do2: ldy #$01
addr_call draw_text1, str_file_count addr_call draw_text1, str_file_count
rts rts
do3: jsr reset_state do3: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
rts rts
@ -12198,7 +12213,7 @@ do1: ldy #$01
yax_call draw_dialog_label, 2, str_file_count yax_call draw_dialog_label, 2, str_file_count
rts rts
do3: jsr reset_state do3: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
rts rts
@ -12240,7 +12255,7 @@ do2: lda winfo_alert_dialog
: sta LAD1F : sta LAD1F
lda #$00 lda #$00
sta LD8E8 sta has_input_field_flag
jsr open_dialog_window jsr open_dialog_window
addr_call draw_dialog_title, desktop_aux::str_delete_title addr_call draw_dialog_title, desktop_aux::str_delete_title
lda LAD1F lda LAD1F
@ -12312,7 +12327,7 @@ LADC4: jsr prompt_input_loop
lda #$00 lda #$00
LADF4: rts LADF4: rts
do5: jsr reset_state do5: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
rts rts
@ -12347,7 +12362,7 @@ LAE42: cmp #$40
jmp LAF16 jmp LAF16
LAE49: lda #$80 LAE49: lda #$80
sta LD8E8 sta has_input_field_flag
jsr LBD69 jsr LBD69
lda #$00 lda #$00
jsr LB509 jsr LB509
@ -12359,7 +12374,7 @@ LAE49: lda #$80
rts rts
LAE70: lda #$80 LAE70: lda #$80
sta LD8E8 sta has_input_field_flag
lda #$00 lda #$00
sta LD8E7 sta LD8E7
jsr LBD75 jsr LBD75
@ -12423,7 +12438,7 @@ LAEFF: inx
ldx #>path_buf0 ldx #>path_buf0
return #0 return #0
LAF16: jsr reset_state LAF16: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
return #1 return #1
@ -12442,7 +12457,7 @@ LAF16: jsr reset_state
jmp LAFB9 jmp LAFB9
LAF34: lda #$00 LAF34: lda #$00
sta LD8E8 sta has_input_field_flag
lda (ptr),y lda (ptr),y
lsr a lsr a
lsr a lsr a
@ -12475,7 +12490,7 @@ LAF92: yax_call draw_dialog_label, 3, desktop_aux::str_info_size
LAF9B: yax_call draw_dialog_label, 4, desktop_aux::str_info_create LAF9B: yax_call draw_dialog_label, 4, desktop_aux::str_info_create
yax_call draw_dialog_label, 5, desktop_aux::str_info_mod yax_call draw_dialog_label, 5, desktop_aux::str_info_mod
yax_call draw_dialog_label, 6, desktop_aux::str_info_type yax_call draw_dialog_label, 6, desktop_aux::str_info_type
jmp reset_state jmp reset_grafport3a
LAFB9: lda winfo_alert_dialog LAFB9: lda winfo_alert_dialog
jsr set_port_from_window_id jsr set_port_from_window_id
@ -12513,7 +12528,7 @@ LAFF8: ldy row
bmi :- bmi :-
pha pha
jsr reset_state jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer_with_flag jsr set_cursor_pointer_with_flag
pla pla
@ -12555,7 +12570,7 @@ row: .byte 0
jmp do4 jmp do4
: lda #$00 : lda #$00
sta LD8E8 sta has_input_field_flag
jsr open_dialog_window jsr open_dialog_window
addr_call draw_dialog_title, desktop_aux::str_lock_title addr_call draw_dialog_title, desktop_aux::str_lock_title
yax_call draw_dialog_label, 4, desktop_aux::str_lock_ok yax_call draw_dialog_label, 4, desktop_aux::str_lock_ok
@ -12618,7 +12633,7 @@ LB0FA: jsr prompt_input_loop
lda #$00 lda #$00
LB139: rts LB139: rts
do4: jsr reset_state do4: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
rts rts
@ -12646,7 +12661,7 @@ do4: jsr reset_state
jmp do4 jmp do4
: lda #$00 : lda #$00
sta LD8E8 sta has_input_field_flag
jsr open_dialog_window jsr open_dialog_window
addr_call draw_dialog_title, desktop_aux::str_unlock_title addr_call draw_dialog_title, desktop_aux::str_unlock_title
yax_call draw_dialog_label, 4, desktop_aux::str_unlock_ok yax_call draw_dialog_label, 4, desktop_aux::str_unlock_ok
@ -12709,7 +12724,7 @@ LB218: jsr prompt_input_loop
lda #$00 lda #$00
LB257: rts LB257: rts
do4: jsr reset_state do4: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
rts rts
@ -12733,7 +12748,7 @@ LB276: cmp #$40
LB27D: jsr LBD75 LB27D: jsr LBD75
jsr copy_dialog_param_addr_to_ptr jsr copy_dialog_param_addr_to_ptr
lda #$80 lda #$80
sta LD8E8 sta has_input_field_flag
jsr LBD69 jsr LBD69
lda #$00 lda #$00
jsr LB509 jsr LB509
@ -12779,7 +12794,7 @@ LB2FD: jsr prompt_input_loop
ldx #$D4 ldx #$D4
return #0 return #0
LB313: jsr reset_state LB313: jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
return #1 return #1
@ -12849,7 +12864,7 @@ draw_string:
bmi :- bmi :-
pha pha
jsr reset_state jsr reset_grafport3a
MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::CloseWindow, winfo_alert_dialog
jsr set_cursor_pointer jsr set_cursor_pointer
pla pla
@ -13055,7 +13070,7 @@ LB526: bit LD8E7
bmi LB537 bmi LB537
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::cancel_button_rect MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::cancel_button_rect
jsr draw_cancel_label jsr draw_cancel_label
LB537: jmp reset_state LB537: jmp reset_grafport3a
.proc open_dialog_window .proc open_dialog_window
MGTK_RELAY_CALL MGTK::OpenWindow, winfo_alert_dialog MGTK_RELAY_CALL MGTK::OpenWindow, winfo_alert_dialog
@ -13460,7 +13475,7 @@ click_result:
;;; ============================================================ ;;; ============================================================
.proc LB8F5 .proc redraw_prompt_insertion_point
point := $6 point := $6
xcoord := $6 xcoord := $6
ycoord := $8 ycoord := $8
@ -13469,26 +13484,30 @@ click_result:
stax xcoord stax xcoord
copy16 name_input_textpos::ycoord, ycoord copy16 name_input_textpos::ycoord, ycoord
MGTK_RELAY_CALL MGTK::MoveTo, point MGTK_RELAY_CALL MGTK::MoveTo, point
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3 MGTK_RELAY_CALL MGTK::SetPortBits, name_input_mapinfo
bit LD8EB bit prompt_ip_flag
bpl LB92D bpl set_flag
MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::LAE6C
clear_flag:
MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::textbg_black
lda #$00 lda #$00
sta LD8EB sta prompt_ip_flag
beq LB93B beq draw
LB92D: MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::LAE6D
set_flag:
MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::textbg_white
lda #$FF lda #$FF
sta LD8EB sta prompt_ip_flag
drawtext_params := $6 drawtext_params := $6
textptr := $6 textptr := $6
textlen := $8 textlen := $8
LB93B: copy16 #LD8EF, textptr draw: copy16 #str_insertion_point+1, textptr
lda LD8EE lda str_insertion_point
sta textlen sta textlen
MGTK_RELAY_CALL MGTK::DrawText, drawtext_params MGTK_RELAY_CALL MGTK::DrawText, drawtext_params
MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::LAE6D MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::textbg_white
lda winfo_alert_dialog lda winfo_alert_dialog
jsr set_port_from_window_id jsr set_port_from_window_id
rts rts
@ -13506,7 +13525,7 @@ LB93B: copy16 #LD8EF, textptr
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
MGTK_RELAY_CALL MGTK::FrameRect, name_input_rect MGTK_RELAY_CALL MGTK::FrameRect, name_input_rect
MGTK_RELAY_CALL MGTK::MoveTo, name_input_textpos MGTK_RELAY_CALL MGTK::MoveTo, name_input_textpos
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3 MGTK_RELAY_CALL MGTK::SetPortBits, name_input_mapinfo
addr_call draw_text1, path_buf1 addr_call draw_text1, path_buf1
addr_call draw_text1, path_buf2 addr_call draw_text1, path_buf2
addr_call draw_text1, str_2_spaces addr_call draw_text1, str_2_spaces
@ -13636,7 +13655,7 @@ LBADE: cpx path_buf2
jmp LBADE jmp LBADE
LBAEE: sty LD3C0+1 LBAEE: sty LD3C0+1
lda LD8EF lda str_insertion_point+1
sta LD3C0+2 sta LD3C0+2
LBAF7: lda LD3C0+1,y LBAF7: lda LD3C0+1,y
sta path_buf2,y sta path_buf2,y
@ -13675,7 +13694,7 @@ LBB0B: sta LBB62
stax xcoord stax xcoord
copy16 name_input_textpos::ycoord, ycoord copy16 name_input_textpos::ycoord, ycoord
MGTK_RELAY_CALL MGTK::MoveTo, point MGTK_RELAY_CALL MGTK::MoveTo, point
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3 MGTK_RELAY_CALL MGTK::SetPortBits, name_input_mapinfo
addr_call draw_text1, str_1_char addr_call draw_text1, str_1_char
addr_call draw_text1, path_buf2 addr_call draw_text1, path_buf2
lda winfo_alert_dialog lda winfo_alert_dialog
@ -13698,7 +13717,7 @@ LBB63: lda path_buf1
stax xcoord stax xcoord
copy16 name_input_textpos::ycoord, ycoord copy16 name_input_textpos::ycoord, ycoord
MGTK_RELAY_CALL MGTK::MoveTo, point MGTK_RELAY_CALL MGTK::MoveTo, point
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3 MGTK_RELAY_CALL MGTK::SetPortBits, name_input_mapinfo
addr_call draw_text1, path_buf2 addr_call draw_text1, path_buf2
addr_call draw_text1, str_2_spaces addr_call draw_text1, str_2_spaces
lda winfo_alert_dialog lda winfo_alert_dialog
@ -13732,7 +13751,7 @@ LBBBC: ldx path_buf1
stax xcoord stax xcoord
copy16 name_input_textpos::ycoord, ycoord copy16 name_input_textpos::ycoord, ycoord
MGTK_RELAY_CALL MGTK::MoveTo, point MGTK_RELAY_CALL MGTK::MoveTo, point
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3 MGTK_RELAY_CALL MGTK::SetPortBits, name_input_mapinfo
addr_call draw_text1, path_buf2 addr_call draw_text1, path_buf2
addr_call draw_text1, str_2_spaces addr_call draw_text1, str_2_spaces
lda winfo_alert_dialog lda winfo_alert_dialog
@ -13761,7 +13780,7 @@ LBC21: lda path_buf2+1,x
bne LBC21 bne LBC21
LBC2D: dec path_buf2 LBC2D: dec path_buf2
MGTK_RELAY_CALL MGTK::MoveTo, name_input_textpos MGTK_RELAY_CALL MGTK::MoveTo, name_input_textpos
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3 MGTK_RELAY_CALL MGTK::SetPortBits, name_input_mapinfo
addr_call draw_text1, path_buf1 addr_call draw_text1, path_buf1
addr_call draw_text1, path_buf2 addr_call draw_text1, path_buf2
addr_call draw_text1, str_2_spaces addr_call draw_text1, str_2_spaces
@ -13789,7 +13808,7 @@ LBC80: lda path_buf1,x
sta path_buf2+1,x sta path_buf2+1,x
dex dex
bne LBC80 bne LBC80
lda LD8EF lda str_insertion_point+1
sta path_buf2+1 sta path_buf2+1
inc path_buf1 inc path_buf1
lda path_buf1 lda path_buf1
@ -13903,9 +13922,9 @@ LBD33: rts
;;; ============================================================ ;;; ============================================================
LBD69: lda #$01 LBD69: lda #1
sta path_buf2 sta path_buf2
lda LD8EF lda str_insertion_point+1
sta path_buf2+1 sta path_buf2+1
rts rts
@ -14084,7 +14103,7 @@ set_fill_white:
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
rts rts
reset_state: reset_grafport3a:
MGTK_RELAY_CALL MGTK::InitPort, grafport3 MGTK_RELAY_CALL MGTK::InitPort, grafport3
MGTK_RELAY_CALL MGTK::SetPort, grafport3 MGTK_RELAY_CALL MGTK::SetPort, grafport3
rts rts

View File

@ -532,7 +532,7 @@ pointD: DEFINE_POINT 40,35, pointD
dialog_label_pos: dialog_label_pos:
DEFINE_POINT dialog_label_default_x,0, dialog_label_pos DEFINE_POINT dialog_label_default_x,0, dialog_label_pos
.proc setportbits_params3 .proc name_input_mapinfo
DEFINE_POINT 75, 35 DEFINE_POINT 75, 35
.addr MGTK::screen_mapbits .addr MGTK::screen_mapbits
.byte MGTK::screen_mapwidth .byte MGTK::screen_mapwidth
@ -635,14 +635,25 @@ buf_filename:
.res 16, 0 .res 16, 0
LD8E7: .byte 0 LD8E7: .byte 0
LD8E8: .byte 0 has_input_field_flag:
LD8E9: .byte $14 .byte 0
prompt_insertion_point_blink_count := $14
prompt_ip_counter:
.byte prompt_insertion_point_blink_count
.byte $00 .byte $00
LD8EB: .byte 0
prompt_ip_flag:
.byte 0
LD8EC: .byte 0 LD8EC: .byte 0
LD8ED: .byte 0 LD8ED: .byte 0
LD8EE: .byte 1
LD8EF: .byte 6 str_insertion_point:
PASCAL_STRING {GLYPH_INSPT}
LD8F0: .byte 0 LD8F0: .byte 0
LD8F1: .byte 0 LD8F1: .byte 0
@ -651,9 +662,13 @@ LD8F3: .byte 0
LD8F4: .byte 0 LD8F4: .byte 0
LD8F5: .byte 0 LD8F5: .byte 0
;; Used to draw/clear insertion point; overwritten with char
;; to right of insertion point as needed.
str_1_char: str_1_char:
PASCAL_STRING {0} PASCAL_STRING {0}
;; Used as suffix for text being edited to account for insertion
;; point adding extra width.
str_2_spaces: str_2_spaces:
PASCAL_STRING " " PASCAL_STRING " "

View File

@ -38,7 +38,7 @@ routine_table: .addr $7000, $7000, $7000
lda #0 lda #0
sta L5027 sta L5027
sta L50A8 sta L50A8
sta LD8EB sta prompt_ip_flag
sta LD8EC sta LD8EC
sta $D8F0 sta $D8F0
sta $D8F1 sta $D8F1
@ -1112,8 +1112,8 @@ L5C4F: ldx #3
bpl :- bpl :-
lda machine_type ; Timer for insertion point blink lda machine_type ; Timer for insertion point blink
sta L5CEF sta ip_blink_counter
L5C60: dec L5CEF L5C60: dec ip_blink_counter
beq L5CA6 beq L5CA6
MGTK_RELAY_CALL MGTK::PeekEvent, event_params MGTK_RELAY_CALL MGTK::PeekEvent, event_params
jsr L5CA9 jsr L5CA9
@ -1168,7 +1168,9 @@ L5CE5: lda L5CF4
bcs L5CC2 bcs L5CC2
L5CEC: return #$00 L5CEC: return #$00
L5CEF: .byte 0 ip_blink_counter:
.byte 0
L5CF0: .byte 0 L5CF0: .byte 0
L5CF1: .byte 0 L5CF1: .byte 0
L5CF2: .byte 0 L5CF2: .byte 0
@ -2034,15 +2036,15 @@ L658B: cmp #$09
stax $06 stax $06
copy16 common_input1_textpos+2, $08 copy16 common_input1_textpos+2, $08
MGTK_RELAY_CALL MGTK::MoveTo, $06 MGTK_RELAY_CALL MGTK::MoveTo, $06
bit LD8EB bit prompt_ip_flag
bpl L65C8 bpl L65C8
MGTK_RELAY_CALL MGTK::SetTextBG, textbg1 MGTK_RELAY_CALL MGTK::SetTextBG, textbg1
lda #$00 lda #$00
sta LD8EB sta prompt_ip_flag
beq L65D6 beq L65D6
L65C8: MGTK_RELAY_CALL MGTK::SetTextBG, textbg2 L65C8: MGTK_RELAY_CALL MGTK::SetTextBG, textbg2
lda #$FF lda #$FF
sta LD8EB sta prompt_ip_flag
L65D6: copy16 #$D8EF, $06 L65D6: copy16 #$D8EF, $06
lda $D8EE lda $D8EE
sta $08 sta $08
@ -2056,16 +2058,16 @@ L65D6: copy16 #$D8EF, $06
stax $06 stax $06
copy16 common_input2_textpos+2, $08 copy16 common_input2_textpos+2, $08
MGTK_RELAY_CALL MGTK::MoveTo, $06 MGTK_RELAY_CALL MGTK::MoveTo, $06
bit LD8EB bit prompt_ip_flag
bpl L6626 bpl L6626
MGTK_RELAY_CALL MGTK::SetTextBG, textbg1 MGTK_RELAY_CALL MGTK::SetTextBG, textbg1
lda #$00 lda #$00
sta LD8EB sta prompt_ip_flag
jmp L6634 jmp L6634
L6626: MGTK_RELAY_CALL MGTK::SetTextBG, textbg2 L6626: MGTK_RELAY_CALL MGTK::SetTextBG, textbg2
lda #$FF lda #$FF
sta LD8EB sta prompt_ip_flag
L6634: copy16 #$D8EF, $06 L6634: copy16 #$D8EF, $06
lda $D8EE lda $D8EE
sta $08 sta $08

View File

@ -25,16 +25,16 @@ for (my $i = 0; $i < $num; ++$i) {
$chars[$i] = ''; $chars[$i] = '';
} }
# Skip widths my @widths;
for (my $i = 0; $i < $num; ++$i) { for (my $i = 0; $i < $num; ++$i) {
read(STDIN, $b, 1); push @widths, getbyte();
} }
for (my $row = 0; $row < $height; ++$row) { for (my $row = 0; $row < $height; ++$row) {
for (my $col = 0; $col < $cols; ++$col) { for (my $col = 0; $col < $cols; ++$col) {
for (my $c = 0; $c < $num; ++$c) { for (my $c = 0; $c < $num; ++$c) {
my $bits = sprintf("%07b", getbyte()); my $bits = sprintf("%07b", getbyte());
$bits =~ tr/01/ #/; $bits =~ tr/01/.#/;
$bits = reverse $bits; $bits = reverse $bits;
$chars[$c] .= $bits; $chars[$c] .= $bits;
@ -45,7 +45,13 @@ for (my $row = 0; $row < $height; ++$row) {
} }
} }
for (my $i = 0; $i < $num; ++$i) {
$chars[$i] =
join("\n",
map { substr($_, 0, $widths[$i]) }
split("\n", $chars[$i]));
}
for (my $i = 0; $i < $num; ++$i) { for (my $i = 0; $i < $num; ++$i) {
print "== 0x".sprintf("%02x",$i)." ==\n$chars[$i]"; print "== 0x".sprintf("%02x",$i)." ==\n$chars[$i]\n";
} }