diff --git a/desktop/Makefile b/desktop/Makefile index 972cdb9..763dab1 100644 --- a/desktop/Makefile +++ b/desktop/Makefile @@ -25,7 +25,7 @@ clean: rm -f $(OUTDIR)/*.built rm -f $(OUTDIR)/*.sys -$(OUTDIR)/desktop_res.inc: desktop_res.s desktop_res_builder.s +$(OUTDIR)/desktop_res.inc: desktop_res.s desktop_res_builder.s res/build_res_inc.pl $(CC65)/ca65 $(CAFLAGS) --listing $(OUTDIR)/desktop_res.list -o $@ desktop_res_builder.s cat $(OUTDIR)/desktop_res.list | res/build_res_inc.pl > $@ diff --git a/desktop/README.md b/desktop/README.md index 98a6a2e..fa6a690 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -99,15 +99,15 @@ data. ### "DeskTop" Application -`desktop.s` which pulls in: +`desktop.s` which includes in: * `desktop_aux.s` * `desktop_lc.s` (which pulls in `desktop_res.s`) * `desktop_main.s` DeskTop application code is in the lower 48k of both Aux and Main: -* Aux $851F-$BFFF - sitting above the GUI library -* Main $4000-$BEFF +* Aux $851F-$BFFF - sitting above the GUI library (`desktop_aux.s`) +* Main $4000-$BEFF (`desktop_main.s`) ...and in the Aux language card area (accessible from both aux and main code) are relays, buffers and resources: @@ -118,6 +118,11 @@ main code) are relays, buffers and resources: ($C000-$CFFF is reserved for I/O, and main $BF page and language card is ProDOS) +`desktop_res.s` defines these common resources. It is built as part of +`desktop.s`. Early in the build process it is also built as part of +`desktop_res_build.s` which is processed to produce `out/desktop_res.inc`, +which is used by the overlay sources. + Aux $1B00-$1F7F holds lists of icons, one for the desktop then one for up to 8 windows. First byte is a count, up to 127 icon entries. Icon numbers map indirectly into a table at $ED00 that holds the type, coordinates, etc. diff --git a/desktop/desktop_res.s b/desktop/desktop_res.s index f0ecc0f..42faf9d 100644 --- a/desktop/desktop_res.s +++ b/desktop/desktop_res.s @@ -530,7 +530,27 @@ dialog_label_pos: .endproc ;; ??? - .byte $00,$04,$00,$02,$00,$5A,$01,$6C,$00,$05,$00,$03,$00,$59,$01,$6B,$00,$06,$00,$16,$00,$58,$01,$16,$00,$06,$00,$59,$00,$58,$01,$59,$00,$D2,$00,$5C,$00,$36,$01,$67,$00 + .byte $00 + +rect_D6D8: + DEFINE_RECT 4,2,346,108 +rect_D6E0: + DEFINE_RECT 5,3,345,107 + + ;; Line endpoints +pos_D6E8: + DEFINE_POINT 6,22 +pos_D6EC: + DEFINE_POINT 344,22 + + ;; Line endpoints +pos_D6F0: + DEFINE_POINT 6,89 +pos_D6F4: + DEFINE_POINT 344,89 + +rect_D6F8: + DEFINE_RECT 210,92,310,103 rect_D700: DEFINE_RECT 40,92,140,103 @@ -574,8 +594,11 @@ enter_the_full_pathname_label2: .byte $00,$00,$00,$00,$00,$00,$00 .byte $00,$06,$00,$17,$00,$58,$01,$57 - .byte $00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00 + .byte $00,$00 + +rect_D888: + DEFINE_RECT 0,0,0,0 + .byte 0 the_dos_33_disk_label: PASCAL_STRING "the DOS 3.3 disk in slot drive ?" diff --git a/desktop/ovl2.s b/desktop/ovl2.s index 3143d41..9e2539a 100644 --- a/desktop/ovl2.s +++ b/desktop/ovl2.s @@ -364,19 +364,19 @@ L0C0F: lda L0C1E L0C1E: .byte 0 L0C1F: .byte 0 L0C20: ldy #$27 - sty $D888 + sty rect_D888 ldy #$00 - sty $D889 + sty rect_D888+1 tax lsr a lsr a sta L0CA9 beq L0C5B - add16 $D888, #$0078, $D888 + add16 rect_D888, #$0078, rect_D888 lda L0CA9 cmp #$01 beq L0C5B - add16 $D888, #$0078, $D888 + add16 rect_D888, #$0078, rect_D888 L0C5B: asl L0CA9 asl L0CA9 txa @@ -387,13 +387,13 @@ L0C5B: asl L0CA9 asl a clc adc #$2B - sta $D88A + sta rect_D888+2 lda #$00 - sta $D88B - add16 $D888, #$0077, $D88C - add16 $D88A, #$0007, $D88E + sta rect_D888+3 + add16 rect_D888, #$0077, rect_D888+4 + add16 rect_D888+2, #$0007, rect_D888+6 MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::PaintRect, $D888 + MGTK_RELAY_CALL MGTK::PaintRect, rect_D888 rts L0CA9: .byte 0 diff --git a/desktop/ovl3.s b/desktop/ovl3.s index 21d4e50..264947e 100644 --- a/desktop/ovl3.s +++ b/desktop/ovl3.s @@ -419,15 +419,15 @@ L9390: MGTK_RELAY_CALL MGTK::OpenWindow, winfo_entry_picker lda winfo_entry_picker jsr set_port_from_window_id MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::FrameRect, $D6D8 - MGTK_RELAY_CALL MGTK::FrameRect, $D6E0 - MGTK_RELAY_CALL MGTK::MoveTo, $D6E8 - MGTK_RELAY_CALL MGTK::LineTo, $D6EC - MGTK_RELAY_CALL MGTK::MoveTo, $D6F0 - MGTK_RELAY_CALL MGTK::LineTo, $D6F4 + MGTK_RELAY_CALL MGTK::FrameRect, rect_D6D8 + MGTK_RELAY_CALL MGTK::FrameRect, rect_D6E0 + MGTK_RELAY_CALL MGTK::MoveTo, pos_D6E8 + MGTK_RELAY_CALL MGTK::LineTo, pos_D6EC + MGTK_RELAY_CALL MGTK::MoveTo, pos_D6F0 + MGTK_RELAY_CALL MGTK::LineTo, pos_D6F4 MGTK_RELAY_CALL MGTK::SetPenMode, pencopy MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::FrameRect, $D6F8 + MGTK_RELAY_CALL MGTK::FrameRect, rect_D6F8 MGTK_RELAY_CALL MGTK::FrameRect, rect_D700 jsr L94A9 jsr L94BA @@ -559,7 +559,7 @@ L953F: MGTK_RELAY_CALL MGTK::GetEvent, event_params sta screentowindow_window_id MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx - MGTK_RELAY_CALL MGTK::InRect, $D6F8 + MGTK_RELAY_CALL MGTK::InRect, rect_D6F8 cmp #MGTK::inrect_inside beq L957C lda L95BF @@ -571,7 +571,7 @@ L957C: lda L95BF jmp L953F L9584: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::PaintRect, $D6F8 + MGTK_RELAY_CALL MGTK::PaintRect, rect_D6F8 lda L95BF clc adc #$80 @@ -583,7 +583,7 @@ L95A2: lda L95BF return #$FF L95AA: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::PaintRect, $D6F8 + MGTK_RELAY_CALL MGTK::PaintRect, rect_D6F8 return #$00 L95BF: .byte 0 @@ -655,11 +655,11 @@ L9683: lda winfo_entry_picker sta screentowindow_window_id MGTK_RELAY_CALL MGTK::ScreenToWindow, screentowindow_params MGTK_RELAY_CALL MGTK::MoveTo, screentowindow_windowx - MGTK_RELAY_CALL MGTK::InRect, $D6F8 + MGTK_RELAY_CALL MGTK::InRect, rect_D6F8 cmp #MGTK::inrect_inside bne L96C8 MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::PaintRect, $D6F8 + MGTK_RELAY_CALL MGTK::PaintRect, rect_D6F8 jsr L953A bmi L96C7 lda #$00 @@ -829,9 +829,9 @@ L9822: lda event_modifiers : return #$FF L985E: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::PaintRect, $D6F8 + MGTK_RELAY_CALL MGTK::PaintRect, rect_D6F8 MGTK_RELAY_CALL MGTK::SetPenMode, penXOR - MGTK_RELAY_CALL MGTK::PaintRect, $D6F8 + MGTK_RELAY_CALL MGTK::PaintRect, rect_D6F8 return #$00 L9885: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR diff --git a/desktop/ovl4.s b/desktop/ovl4.s index 36eef2d..91bf423 100644 --- a/desktop/ovl4.s +++ b/desktop/ovl4.s @@ -246,7 +246,7 @@ L531F: bit L5105 beq L5341 cmp #MGTK::ctl_vertical_scroll_bar bne L5340 - lda winfo_entrydlg_file_picker + MGTK::winfo_offset_vscroll + lda winfo_entrydlg_file_picker_vscroll and #$01 beq L5340 jmp L5469 @@ -378,7 +378,7 @@ L5488: lda #MGTK::ctl_vertical_scroll_bar jsr L606D rts -L54BA: lda winfo_entrydlg_file_picker + MGTK::winfo_offset_vthumbpos +L54BA: lda winfo_entrydlg_file_picker_vthumbpos sec sbc #$09 bpl L54C4 @@ -392,7 +392,7 @@ L54C4: sta updatethumb_thumbpos jsr L606D rts -L54DF: lda winfo_entrydlg_file_picker + MGTK::winfo_offset_vthumbpos +L54DF: lda winfo_entrydlg_file_picker_vthumbpos clc adc #$09 cmp $177F @@ -408,7 +408,7 @@ L54EF: sta updatethumb_thumbpos jsr L606D rts -L550A: lda winfo_entrydlg_file_picker + MGTK::winfo_offset_vthumbpos +L550A: lda winfo_entrydlg_file_picker_vthumbpos bne L5510 rts @@ -424,8 +424,8 @@ L5510: sec jsr L555F jmp L550A -L5533: lda winfo_entrydlg_file_picker + MGTK::winfo_offset_vthumbpos - cmp winfo_entrydlg_file_picker + MGTK::winfo_offset_vthumbmax +L5533: lda winfo_entrydlg_file_picker_vthumbpos + cmp winfo_entrydlg_file_picker_vthumbmax bne L553C rts @@ -1606,7 +1606,7 @@ L6163: sta L61B0 rts L6181: lda $177F - sta winfo_entrydlg_file_picker + MGTK::winfo_offset_vthumbmax + sta winfo_entrydlg_file_picker_vthumbmax .assert MGTK::ctl_vertical_scroll_bar = MGTK::activatectl_activate, error, "need to match" lda #MGTK::ctl_vertical_scroll_bar sta activatectl_which_ctl diff --git a/desktop/res/build_res_inc.pl b/desktop/res/build_res_inc.pl index 70bbb4e..aa62eb1 100755 --- a/desktop/res/build_res_inc.pl +++ b/desktop/res/build_res_inc.pl @@ -25,23 +25,24 @@ while () { next; } - next if $proc; - if ($line =~ m/^(\S+)\s*:=\s*(.*)/) { my ($symbol, $value) = ($1, $2); next if $value =~ m/::/; $value =~ s/\*/\$$addr/; # foo := * + 2 + $symbol = $proc . '_' . $symbol if $proc; push @equates, [$symbol, $value]; next; } if ($line =~ m/^(\S+):/) { - push @symbols, [$1, $addr]; + my ($symbol) = ($1); + $symbol = $proc . '_' . $symbol if $proc; + push @symbols, [$symbol, $addr]; } } foreach my $pair (@symbols) { - printf "%-24s := \$%s\n", @$pair[0], @$pair[1]; + printf "%-30s := \$%s\n", @$pair[0], @$pair[1]; } foreach my $pair (@equates) {