mirror of
https://github.com/mi57730/a2d.git
synced 2024-11-26 02:49:18 +00:00
parent
e94b6e7f2d
commit
bc47645c5f
@ -4,7 +4,7 @@ CAFLAGS = --target apple2enh --list-bytes 0
|
||||
CCFLAGS = --config apple2-asm.cfg
|
||||
|
||||
# ProDOS file type is $F1 ($ is pesky)
|
||||
TARGETS = calculator.F1 show_text_file.F1 date.F1 puzzle.F1 show_image_file.F1
|
||||
TARGETS = calculator.F1 show_text_file.F1 date.F1 puzzle.F1 show_image_file.F1 calc_fixed.F1
|
||||
|
||||
.PHONY: clean all
|
||||
all: $(TARGETS)
|
||||
|
1710
desk.acc/calc_fixed.s
Normal file
1710
desk.acc/calc_fixed.s
Normal file
File diff suppressed because it is too large
Load Diff
@ -81,10 +81,8 @@ call_init:
|
||||
;; redraws the window.
|
||||
.proc redraw_screen_and_window
|
||||
|
||||
;; Redraw the desktop (by copying trampoline to ZP)
|
||||
zp_stash := $20
|
||||
|
||||
;; Copying trampoline routine to the ZP.
|
||||
|
||||
lda LCBANK1
|
||||
lda LCBANK1
|
||||
ldx #sizeof_routine
|
||||
@ -97,19 +95,19 @@ call_init:
|
||||
;; Redraw window after drag
|
||||
lda ROMIN2
|
||||
lda #window_id
|
||||
jsr draw_window
|
||||
jsr check_visibility_and_draw_window
|
||||
|
||||
;; ???
|
||||
lda LCBANK1
|
||||
lda LCBANK1
|
||||
|
||||
bit redraw_flag ; BUG: https://github.com/inexorabletash/a2d/issues/33
|
||||
bit offscreen_flag ; BUG: https://github.com/inexorabletash/a2d/issues/33
|
||||
bmi skip
|
||||
DESKTOP_CALL DESKTOP_REDRAW_ICONS
|
||||
|
||||
;; ???
|
||||
skip: lda #0
|
||||
sta redraw_flag
|
||||
sta offscreen_flag
|
||||
lda ROMIN2
|
||||
A2D_CALL A2D_QUERY_STATE, query_state_params
|
||||
A2D_CALL A2D_SET_STATE, state_params
|
||||
@ -129,17 +127,20 @@ skip: lda #0
|
||||
;;; ==================================================
|
||||
|
||||
|
||||
redraw_flag: .byte 0 ; ???
|
||||
;; Set when the client area is offscreen and
|
||||
;; should not be painted.
|
||||
offscreen_flag:
|
||||
.byte 0
|
||||
|
||||
;; Called after window drag is complete
|
||||
;; (called with window_id in A)
|
||||
.proc draw_window
|
||||
.proc check_visibility_and_draw_window
|
||||
sta query_state_params_id
|
||||
lda create_window_params_top
|
||||
cmp #screen_height - 1
|
||||
bcc :+
|
||||
lda #$80
|
||||
sta redraw_flag
|
||||
sta offscreen_flag
|
||||
rts
|
||||
|
||||
;; Is skipping this responsible for display redraw bug?
|
||||
@ -804,7 +805,7 @@ init: sta ALTZPON
|
||||
lda ROMIN2
|
||||
jsr reset_buffer2
|
||||
lda #window_id
|
||||
jsr draw_window
|
||||
jsr check_visibility_and_draw_window
|
||||
jsr reset_buffers_and_display
|
||||
|
||||
lda #'=' ; last operation
|
||||
@ -819,7 +820,7 @@ init: sta ALTZPON
|
||||
sta calc_l
|
||||
|
||||
.proc copy_to_b1
|
||||
ldx #(end_adjust_txtptr_copied - adjust_txtptr_copied + 4) ; should be just + 1 ?
|
||||
ldx #sizeof_adjust_txtptr_copied + 4 ; should be just + 1 ?
|
||||
loop: lda adjust_txtptr_copied-1,x
|
||||
sta adjust_txtptr-1,x
|
||||
dex
|
||||
@ -1699,6 +1700,6 @@ loop: inc TXTPTR
|
||||
sbc #$D0 ; carry set if successful
|
||||
end: rts
|
||||
.endproc
|
||||
end_adjust_txtptr_copied := *
|
||||
sizeof_adjust_txtptr_copied := * - adjust_txtptr_copied
|
||||
|
||||
da_end := *
|
||||
|
@ -18,8 +18,6 @@ function stats {
|
||||
echo "$1: "$(res/stats.pl < "$1")
|
||||
}
|
||||
|
||||
|
||||
|
||||
#do_make clean
|
||||
do_make all
|
||||
|
||||
@ -37,4 +35,7 @@ stats "date.s"
|
||||
stats "puzzle.s"
|
||||
|
||||
cat show_image_file.F1 > mount/SHOW.IMAGE.FILE.\$F1 \
|
||||
&& echo "Updated mountable file"
|
||||
&& echo "Updated mountable file (SIF)"
|
||||
|
||||
cat calc_fixed.F1 > mount/TEST.\$F1 \
|
||||
&& echo "Updated mountable file (Test)"
|
||||
|
@ -7,10 +7,6 @@
|
||||
.include "../inc/auxmem.inc"
|
||||
.include "a2d.inc"
|
||||
|
||||
;; Big questions:
|
||||
;; * How can we hide/show the cursor on demand?
|
||||
;; * Can we trigger menu redraw? (if not, need to preserve for fullscreen)
|
||||
|
||||
start: jmp copy2aux
|
||||
|
||||
save_stack:.byte 0
|
||||
@ -34,32 +30,6 @@ dst: sta start,y ; self-modified
|
||||
bne src
|
||||
.endproc
|
||||
|
||||
call_main_trampoline := $20 ; installed on ZP, turns off auxmem and calls...
|
||||
call_main_addr := call_main_trampoline+7 ; address patched in here
|
||||
|
||||
;;; Copy the following "call_main_template" routine to $20
|
||||
.scope
|
||||
sta RAMWRTON
|
||||
sta RAMRDON
|
||||
ldx #sizeof_routine
|
||||
loop: lda routine,x
|
||||
sta call_main_trampoline,x
|
||||
dex
|
||||
bpl loop
|
||||
jmp call_init
|
||||
.endscope
|
||||
|
||||
.proc routine
|
||||
sta RAMRDOFF
|
||||
sta RAMWRTOFF
|
||||
jsr $1000 ; overwritten (in zp version)
|
||||
sta RAMRDON
|
||||
sta RAMWRTON
|
||||
rts
|
||||
.endproc
|
||||
sizeof_routine := * - routine ; can't .sizeof(proc) before declaration
|
||||
;; https://github.com/cc65/cc65/issues/478
|
||||
|
||||
.proc call_init
|
||||
;; run the DA
|
||||
jsr init
|
||||
|
Loading…
Reference in New Issue
Block a user