Split up include files for GUI library vs. DeskTop app

This commit is contained in:
Joshua Bell 2017-10-11 20:45:58 -07:00
parent 2af2fa75fa
commit 8800a0a59b
12 changed files with 210 additions and 242 deletions

View File

@ -1,32 +1,7 @@
;;; ==================================================
;;; A2Desktop
;;; A2Desktop - GUI Library
;;; ==================================================
;;; ==================================================
;;; Direct Calls
;; These must be called from main memory (RAMRDOFF/RAMWRTOFF)
JUMP_TABLE_03 := $4003 ; Enter DeskTop input loop
JUMP_TABLE_06 := $4006 ; ???
JUMP_TABLE_09 := $4009 ; ???
JUMP_TABLE_0C := $400C ; ??? (made "items/in disk/..." redraw oddly)
JUMP_TABLE_0F := $400F ; ???
JUMP_TABLE_12 := $4012 ; ???
JUMP_TABLE_REDRAW_ALL := $4015 ; Redraw all windows (e.g. after a drag)
JUMP_TABLE_18 := $4018 ; ???
JUMP_TABLE_CLEAR_SEL := $401E ; Clear DeskTop selection
JUMP_TABLE_MLI := $4021 ; ProDOS MLI call (Y=call, X,A=params addr)
JUMP_TABLE_24 := $4024 ; ???
JUMP_TABLE_27 := $4027 ; ???
JUMP_TABLE_2A := $402A ; Just an RTS
JUMP_TABLE_2D := $402D ; Draw type/size/date in non-icon views
JUMP_TABLE_30 := $4030 ; ???
JUMP_TABLE_33 := $4033 ; Shows "The syntax of the pathname is invalid.", hangs
JUMP_TABLE_36 := $4036 ; ditto
JUMP_TABLE_CUR_POINTER := $4039 ; Changes mouse cursor to pointer
JUMP_TABLE_CUR_WATCH := $403C ; Changes mouse cursor to watch
JUMP_TABLE_3F := $403F ; ???
;;; ==================================================
;;; A2D Calls
@ -299,6 +274,10 @@ A2D_QUERY_STATE := $3C ; get drawing state of window
;; .byte id window
;; .addr state state definition to populate, like A2D_SET_STATE
A2D_REDRAW_WINDOW := $3E ; Draws window border, background, title bar, scroll bars
;; (input length 1 byte)
;; .byte id
A2D_QUERY_TARGET := $40
;; (input length 4 bytes)
;; .word queryx relative to screen
@ -429,20 +408,6 @@ A2D_DEFAULT_MSKAND := $FF
A2D_DEFAULT_MSKOR := $00
A2D_DEFAULT_TMASK := $7F
;;; ==================================================
DESKTOP := $8E00
;; MLI-style call (jsr A2D ; .byte call ; .addr params)
;; Call from AUX (RAMRDON/RAMWRTON)
;; Implementation bounces to $93BC, uses jump table at $939E
;;; This is the only known call:
DESKTOP_REDRAW_ICONS := $0C ; Repaints desktop icons
;; $0D used at start of drag-select, $09 at end (then another $0D)
;;; ==================================================
;;; Macros
@ -466,24 +431,6 @@ DESKTOP_REDRAW_ICONS := $0C ; Repaints desktop icons
.endif
.endmacro
;;; ------------------------------------
;;; Same as above, but for DESKTOP
.macro DESKTOP_CALL op, addr, label
jsr DESKTOP
.byte op
.if .paramcount > 2
label := *
.endif
.if .paramcount > 1
.addr addr
.else
.addr 0
.endif
.endmacro
;;; ------------------------------------
.macro A2D_DEFSTRING str, label ; String definition, for use with A2D_TEXT
@ -515,26 +462,7 @@ end:
.define PX(bits) (((bits&$40)>>6)|((bits&$20)>>4)|((bits&$10)>>2)|(bits&$8)|((bits&$4)<<2)|((bits&$2)<<4)|((bits&$1)<<6)|$80)
;;; ==================================================
;;; DeskTop Internals
;; These are DeskTop internals, but it appears there is no
;; API for getting the selected file.
file_selected := $DF21 ; 0 if no selection, 1 otherwise
path_index := $DF20 ; index of selected window (used to get prefix)
path_table := $DFB3 ; window address table
;; each entry is 65 bytes long
;; length-prefixed path string (no trailing /)
file_index := $DF22 ; index of selected file (global, not w/in window)
file_table := $DD9F ; file address table
;; each entry is 27 bytes long
;; .byte ??
;; .byte ??
;; .byte type/icon (bits 4,5,6 clear = directory)
;; .word iconx (pixels)
;; .word icony (pixels)
;; .byte ??
;; .byte ??
;; .byte len, name (length-prefixed, spaces before/after; 17 byte buffer)
;;; Internals
A2D_DEFAULT_FONT := $8800

View File

@ -1,13 +1,14 @@
.setcpu "65C02"
.org $800
.setcpu "6502"
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
.include "../inc/applesoft.inc"
.include "a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc" ; needed to redraw DeskTop icons after window move
.org $800
adjust_txtptr := $B1

View File

@ -1,13 +1,14 @@
.setcpu "65C02"
.org $800
.setcpu "6502"
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
.include "../inc/applesoft.inc"
.include "a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc" ; needed to redraw DeskTop icons after window mode
.org $800
adjust_txtptr := $B1

View File

@ -1,12 +1,14 @@
.org $800
.setcpu "65C02"
.setcpu "6502"
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
.include "a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc" ; needed to redraw DeskTop icons after window move
.org $800
;;; ==================================================

View File

@ -1,13 +1,13 @@
.org $800
.setcpu "65C02"
.setcpu "6502"
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
.include "a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc" ; needed to redraw DeskTop icons after window mode
.org $800
jmp copy2aux

View File

@ -1,11 +1,14 @@
.setcpu "65C02"
.org $800
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
.include "a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc" ; needed to get DeskTop selection
.org $800
start: jmp copy2aux

View File

@ -1,11 +1,14 @@
.setcpu "65C02"
.org $800
.setcpu "6502"
.include "apple2.inc"
.include "../inc/ascii.inc"
.include "../inc/prodos.inc"
.include "../inc/auxmem.inc"
.include "a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc" ; needed to get/clear DeskTop selection
.org $800
start: jmp copy2aux

87
desktop.inc Normal file
View File

@ -0,0 +1,87 @@
;;; ==================================================
;;; DeskTop Internals
;;; ==================================================
;;; ==================================================
;;; Direct Calls
;; These must be called from main memory (RAMRDOFF/RAMWRTOFF)
JUMP_TABLE_03 := $4003 ; Enter DeskTop input loop
JUMP_TABLE_06 := $4006 ; ???
JUMP_TABLE_09 := $4009 ; ???
JUMP_TABLE_0C := $400C ; ??? (made "items/in disk/..." redraw oddly)
JUMP_TABLE_0F := $400F ; ???
JUMP_TABLE_12 := $4012 ; ???
JUMP_TABLE_REDRAW_ALL := $4015 ; Redraw all windows (e.g. after a drag)
JUMP_TABLE_18 := $4018 ; ???
JUMP_TABLE_CLEAR_SEL := $401E ; Clear DeskTop selection
JUMP_TABLE_MLI := $4021 ; ProDOS MLI call (Y=call, X,A=params addr)
JUMP_TABLE_24 := $4024 ; ???
JUMP_TABLE_27 := $4027 ; ???
JUMP_TABLE_2A := $402A ; Just an RTS
JUMP_TABLE_2D := $402D ; Draw type/size/date in non-icon views
JUMP_TABLE_30 := $4030 ; ???
JUMP_TABLE_33 := $4033 ; Shows "The syntax of the pathname is invalid.", hangs
JUMP_TABLE_36 := $4036 ; ditto
JUMP_TABLE_CUR_POINTER := $4039 ; Changes mouse cursor to pointer
JUMP_TABLE_CUR_WATCH := $403C ; Changes mouse cursor to watch
JUMP_TABLE_3F := $403F ; ???
;;; ==================================================
DESKTOP := $8E00
;; MLI-style call (jsr A2D ; .byte call ; .addr params)
;; Call from AUX (RAMRDON/RAMWRTON)
;; Implementation bounces to $93BC, uses jump table at $939E
;;; This is the only known call:
DESKTOP_REDRAW_ICONS := $0C ; Repaints desktop icons
;; $0D used at start of drag-select, $09 at end (then another $0D)
;;; ==================================================
;;; Macros
;;; Call a DESKTOP entry point:
;;; DESKTOP_CALL n - params is $0000
;;; DESKTOP_CALL n, params_addr
;;; DESKTOP_CALL m, params_addr, label - params_addr is labeled for modifying
.macro DESKTOP_CALL op, addr, label
jsr DESKTOP
.byte op
.if .paramcount > 2
label := *
.endif
.if .paramcount > 1
.addr addr
.else
.addr 0
.endif
.endmacro
;;; ==================================================
;;; DeskTop Internals
;; These are DeskTop internals, but it appears there is no
;; API for getting the selected file.
file_selected := $DF21 ; 0 if no selection, 1 otherwise
path_index := $DF20 ; index of selected window (used to get prefix)
path_table := $DFB3 ; window address table
;; each entry is 65 bytes long
;; length-prefixed path string (no trailing /)
file_index := $DF22 ; index of selected file (global, not w/in window)
file_table := $DD9F ; file address table
;; each entry is 27 bytes long
;; .byte ??
;; .byte ??
;; .byte type/icon (bits 4,5,6 clear = directory)
;; .word iconx (pixels)
;; .word icony (pixels)
;; .byte ??
;; .byte ??
;; .byte len, name (length-prefixed, spaces before/after; 17 byte buffer)

View File

@ -24,8 +24,8 @@ function asmseg {
asmseg s123_aux
#daseg s4_main1 4000
#asmseg s4_main1
daseg s4_main1 4000
asmseg s4_main1
#daseg 12680_1BCDF
#asmseg 12680_1BCDF

View File

@ -37,3 +37,5 @@ RANGE { START $46ce; END $46ce; TYPE ByteTable; };
RANGE { START $46cf; END $46d0; TYPE AddrTable; };
RANGE { START $50f6; END $50f6; TYPE ByteTable; };
RANGE { START $50f7; END $50f8; TYPE AddrTable; };
RANGE { START $83DB; END $8490; TYPE ByteTable; };

View File

@ -5,7 +5,8 @@
.include "../inc/auxmem.inc"
.include "../inc/prodos.inc"
.include "../inc/mouse.inc"
.include "../desk.acc/a2d.inc"
.include "../a2d.inc"
.include "../desktop.inc"
.proc a2d
@ -338,7 +339,7 @@ a2d_jump_table:
.addr L7500 ; $3B
.addr QUERY_STATE_IMPL ; $3C QUERY_STATE
.addr L761F ; $3D
.addr L7532 ; $3E
.addr REDRAW_WINDOW_IMPL ; $3E REDRAW_WINDOW
.addr L758C ; $3F
.addr QUERY_TARGET_IMPL ; $40 QUERY_TARGET
.addr L7639 ; $41
@ -426,7 +427,7 @@ param_lengths:
PARAM_DEFN 1, $82, 0 ; $3B
PARAM_DEFN 3, $82, 0 ; $3C QUERY_STATE
PARAM_DEFN 2, $82, 0 ; $3D
PARAM_DEFN 1, $82, 0 ; $3E
PARAM_DEFN 1, $82, 0 ; $3E REDRAW_WINDOW
PARAM_DEFN 1, $82, 0 ; $3F
PARAM_DEFN 4, state_pos, 0 ; $40 QUERY_TARGET
PARAM_DEFN 0, $00, 0 ; $41
@ -4859,13 +4860,18 @@ L68F0: sta state_xpos
L68F5: sta state_fill
jmp SET_FILL_MODE_IMPL
L68FA: jsr L6906
do_measure_text:
jsr prepare_text_params
jmp measure_text
L6900: jsr L6906
draw_text:
jsr prepare_text_params
jmp DRAW_TEXT_IMPL
L6906: sta $82
;; Prepare $A1,$A2 as params for MEASURE_TEXT/DRAW_TEXT call
;; ($A3 is length)
prepare_text_params:
sta $82
stx $83
clc
adc #1
@ -4928,8 +4934,8 @@ L6976: jsr L68BE
bit $BF
bvs L69B4
lda $C3
ldx $C4
jsr L68FA
ldx $C3+1
jsr do_measure_text
sta $82
stx $83
lda $BF
@ -5001,8 +5007,8 @@ L6A00: lda $BB
sta $BE
jsr L68A9
lda $B1
ldx $B2
jsr L6900
ldx $B1+1
jsr draw_text
jsr L6A5C
lda state_xpos
ldx state_xpos+1
@ -5478,14 +5484,14 @@ L6D94: lda $BF
lda $C0
sta L685E
L6DB1: lda L6863
ldx L6864
jsr L6900
ldx L6863+1
jsr draw_text
jsr L6A5C
L6DBD: lda L681E
jsr L6E25
lda $C3
ldx $C4
jsr L6900
ldx $C3+1
jsr draw_text
jsr L6A5C
lda $BF
and #$03
@ -5509,8 +5515,8 @@ L6DF3: lda $C1
lda L681F
jsr L6E92
lda L6865
ldx L6866
jsr L6900
ldx L6865+1
jsr draw_text
jsr L6A5C
L6E0A: bit $B0
bmi L6E12
@ -5814,14 +5820,14 @@ L7013: lda L7011
lda L7011+1
sta $A8
lda L700B
ldx L700C
ldx L700B+1
bne L7038
L7025: rts
L7026: lda $A9
sta $A7
lda $AA
sta $A8
lda $A9+1
sta $A7+1
ldy #$39
lda ($A9),y
beq L7025
@ -5829,11 +5835,11 @@ L7026: lda $A9
dey
lda ($A9),y
L7038: sta L700E
stx L700F
stx L700E+1
L703E: lda L700E
ldx L700F
ldx L700E+1
L7044: sta $A9
stx $AA
stx $A9+1
ldy #$0B
L704A: lda ($A9),y
sta $AB,y
@ -6021,8 +6027,8 @@ L718E: jsr L70B7
jsr L6A66
jsr L73BF
lda $AD
ldx $AE
jsr L6900
ldx $AD+1
jsr draw_text
L71AA: jsr L703E
bit $B0
bpl L71B7
@ -6110,7 +6116,7 @@ L723E: sta $96
sta $98
lda $CE
sta $99
jsr FILL_RECT_IMPL
jsr FILL_RECT_IMPL ; draws title bar stripes to left of close box
L7255: lda $AC
and #$01
bne L72C9
@ -6151,7 +6157,7 @@ L7280: tya
sta $96
bcs L72A0
dec $97
L72A0: jsr FILL_RECT_IMPL
L72A0: jsr FILL_RECT_IMPL ; Draw title bar stripes between close box and title
lda $CB
clc
adc #$0A
@ -6167,7 +6173,7 @@ L72A0: jsr FILL_RECT_IMPL
lda $CC
sbc #$00
sta $97
jsr FILL_RECT_IMPL
jsr FILL_RECT_IMPL ; Draw title bar stripes to right of title
A2D_CALL A2D_SET_PATTERN, screen_state::pattern
L72C9: jsr L703E
bit $B0
@ -6272,6 +6278,7 @@ L738E: lda $AC
jsr L6A66
jmp L73BE
;; Draw resize box
L73A6: ldx #$03
L73A8: lda $C7,x
sta resize_box_params,x
@ -6285,8 +6292,8 @@ L73A8: lda $C7,x
L73BE: rts
L73BF: lda $AD
ldx $AE
jsr L68FA
ldx $AD+1
jsr do_measure_text
sta $82
stx $83
lda $C7
@ -6477,7 +6484,7 @@ L7500:
;;; ==================================================
;;; $3E IMPL
;;; REDRAW_WINDOW_IMPL
;;; 1 byte of params, copied to $82
@ -6488,7 +6495,7 @@ L750D: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00
L7532:
REDRAW_WINDOW_IMPL:
jsr L7074
lda $AB
cmp L7010
@ -7036,6 +7043,7 @@ L7911: lda $7E,y
bne L7911
rts
;; Used to draw scrollbar arrows
L791C: sta $82
stx $83
ldy #$03

View File

@ -1,6 +1,6 @@
.org $4000
; da65 V2.16 - Git f5e9b401
; Created: 2017-09-27 19:43:21
; Created: 2017-10-11 20:36:26
; Input file: orig/DESKTOP2_s4_main1
; Page: 1
@ -11,17 +11,13 @@ L0000 := $0000
L0002 := $0002
L0006 := $0006
L0020 := $0020
L0520 := $0520
L0800 := $0800
L0A20 := $0A20
L0CB8 := $0CB8
L0CD7 := $0CD7
L0CF9 := $0CF9
L0D14 := $0D14
L1C00 := $1C00
L2020 := $2020
L2710 := $2710
L3931 := $3931
MLI := $BF00
RAMRDOFF := $C002
RAMRDON := $C003
@ -188,7 +184,7 @@ L4100: jsr L48F0
lda $D208
cmp #$06
bne L412B
L410A: jsr L48E6
jsr L48E6
L410D: jsr L4113
jmp L4100
@ -4696,7 +4692,7 @@ L6556: bit L5B1B
jsr L6E6E
L655E: ldy #$11
lda #$1D
L6562: ldx #$D2
ldx #$D2
jsr LD000
jsr L4510
jmp L6C19
@ -6248,7 +6244,7 @@ L724E: lda ($08),y
lda ($08),y
sta $1F00,x
inx
L7261: ldy #$25
ldy #$25
lda ($08),y
sta $1F00,x
inx
@ -6755,7 +6751,7 @@ L7666: sta L7630,x
dex
bpl L7666
lda $E6BE
L766F: ldx $E1F1
ldx $E1F1
dex
L7673: cmp $E1F2,x
beq L767C
@ -7095,8 +7091,7 @@ L78EF: lda $D21D
ldx #$EB
jsr LD000
ldy #$10
.byte $A9
L7961: .byte $C2
lda #$C2
ldx #$EB
jsr LD000
lda $D21F
@ -8313,97 +8308,40 @@ L83C7: tay
ldx #$84
jmp L84A4
L83DB: brk
L83DC: brk
L83DD: brk
L83DB: .byte $00
L83DC: .byte $00
L83DD: .byte $00
L83DE: .byte $03
L83DF: .byte $20
L83E0: .byte $20
L83E1: .byte $20
L83E2: .byte $FC
L83E3: .byte $83
asl $84
ora ($84),y
trb $2784
sty $32
sty $3D
sty $48
sty $53
sty $5E
sty $69
sty $74
sty $7F
sty $09
ror $206F
stz $61
stz $65,x
jsr L0A20
lsr a
adc ($6E,x)
adc $61,x
adc ($79)
jsr L2020
asl a
lsr $65
.byte $62
adc ($75)
adc ($72,x)
adc L2020,y
asl a
eor L7261
.byte $63
pla
jsr L2020
jsr L0A20
eor ($70,x)
adc ($69)
jmp (L2020)
jsr L2020
asl a
eor L7961
jsr L2020
jsr L2020
jsr L4A0A
adc $6E,x
adc L0020
jsr L2020
jsr L0A20
lsr a
adc $6C,x
adc L2020,y
jsr L2020
jsr L410A
adc $67,x
adc $73,x
stz L0020,x
jsr L2020
asl a
.byte $53
adc $70
stz $65,x
adc L6562
adc (L0020)
asl a
bbr4 $63,L84E1
bbr6 $62,L84D5
adc (L0020)
jsr L0A20
lsr L766F
adc $6D
.byte $62
adc $72
jsr L0A20
.byte $44
adc $63
adc $6D
.byte $62
adc $72
jsr L0520
jsr L3931
L848E: sec
L83E3: .byte $83,$06,$84,$11,$84,$1C,$84,$27
.byte $84,$32,$84,$3D,$84,$48,$84,$53
.byte $84,$5E,$84,$69,$84,$74,$84,$7F
.byte $84,$09,$6E,$6F,$20,$64,$61,$74
.byte $65,$20,$20,$0A,$4A,$61,$6E,$75
.byte $61,$72,$79,$20,$20,$20,$0A,$46
.byte $65,$62,$72,$75,$61,$72,$79,$20
.byte $20,$0A,$4D,$61,$72,$63,$68,$20
.byte $20,$20,$20,$20,$0A,$41,$70,$72
.byte $69,$6C,$20,$20,$20,$20,$20,$0A
.byte $4D,$61,$79,$20,$20,$20,$20,$20
.byte $20,$20,$0A,$4A,$75,$6E,$65,$20
.byte $20,$20,$20,$20,$20,$0A,$4A,$75
.byte $6C,$79,$20,$20,$20,$20,$20,$20
.byte $0A,$41,$75,$67,$75,$73,$74,$20
.byte $20,$20,$20,$0A,$53,$65,$70,$74
.byte $65,$6D,$62,$65,$72,$20,$0A,$4F
.byte $63,$74,$6F,$62,$65,$72,$20,$20
.byte $20,$0A,$4E,$6F,$76,$65,$6D,$62
.byte $65,$72,$20,$20,$0A,$44,$65,$63
.byte $65,$6D,$62,$65,$72,$20,$20,$05
.byte $20,$31,$39
L848E: .byte $38
L848F: .byte $35
L8490: ora #$0A
L8490: .byte $09
asl a
trb $1E
plp
and ($3C)
@ -8441,23 +8379,18 @@ L84CD: .byte $EB
L84CF: brk
L84D0: brk
L84D1: jsr L87F6
.byte $2C
L84D5: .byte $1B
.byte $5B
bit L5B1B
bmi L84DC
jsr L6E52
L84DC: lda $D221
sec
.byte $ED
L84E1: ora L8DD2,x
sed
sta $AD
.byte $22
cmp ($ED)
asl L8DD2,x
sbc LAD85,y
.byte $23
cmp ($38)
sbc $D21D
sta L85F8
lda $D222
sbc $D21E
sta L85F9
lda $D223
sec
sbc $D21F
sta L85FA
lda $D224
@ -9621,7 +9554,7 @@ L8DC7: lda L8E0F
asl a
asl a
clc
L8DD2: adc #$07
adc #$07
tax
ldy #$07
L8DD7: lda L0800,x
@ -13684,7 +13617,7 @@ LAD6C: ldy #$01
jsr LBDDF
lda $D57D
jsr LB7B9
LAD85: jsr LBE8D
jsr LBE8D
jsr LB3BF
ldy #$03
lda (L0006),y