DeskTop Seg 1: Param blocks, direct calls to desktop entry point

This commit is contained in:
Joshua Bell 2017-10-05 08:19:44 -07:00
parent bebc0d1e76
commit 09183e88cc

View File

@ -16,6 +16,8 @@ LD05E := $D05E
LD2D0 := $D2D0
;; A2D
.assert * = $4000, error, "A2D entry point must be at $4000"
lda $C054
sta $C001
bit L5F1B
@ -4977,24 +4979,24 @@ L6E33: jmp L68EA
L6E36: ldx $A9
lda L6847,x
sta L6E8C
inc L6E8C
sta fill_rect_params3_top
inc fill_rect_params3_top
lda L6848,x
sta L6E90
sta fill_rect_params3_bottom
clc
lda $BB
adc #$05
sta L6E8A
sta fill_rect_params3_left
lda $BC
adc #$00
sta L6E8B
sta fill_rect_params3_left+1
sec
lda $BD
sbc #$05
sta L6E8E
sta fill_rect_params3_right
lda $BE
sbc #$00
sta L6E8F
sta fill_rect_params3_right+1
A2D_CALL A2D_SET_PATTERN, light_speckle_pattern
lda #$01
jsr L68F5
@ -5014,15 +5016,17 @@ light_speckle_pattern:
.byte %10001000
.byte %01010101
fill_rect_params3:
L6E8A: .byte 0
L6E8B: .byte 0
L6E8C: .byte 0
.byte 0
L6E8E: .byte 0
L6E8F: .byte 0
L6E90: .byte 0
.byte 0
.proc fill_rect_params3
left: .word 0
top: .word 0
right: .word 0
bottom: .word 0
.endproc
fill_rect_params3_left := fill_rect_params3::left
fill_rect_params3_top := fill_rect_params3::top
fill_rect_params3_right := fill_rect_params3::right
fill_rect_params3_bottom := fill_rect_params3::bottom
L6E92: sta L0082
lda $BD
ldx $BE
@ -8082,7 +8086,7 @@ L869E: sta ($06),y
sta ($06),y
ldx #$00
ldy #$0B
L86B6: lda L877A,x
L86B6: lda online_params_buffer+1,x
cmp #$41
bcc L86C4
cmp #$5F
@ -8169,14 +8173,15 @@ L8739: .byte $00,$00,$00,$00
.proc online_params
count: .byte 2
unit: .byte $60
unit: .byte $60 ; Slot 6 Drive 1
buffer: .addr online_params_buffer
.endproc
online_params_unit := online_params::unit
;; Per ProDOS TRM this should be 256 bytes!
online_params_buffer:
.byte $0B
L877A: .byte "GRAPHICS.TK",$00,$00,$00,$00,$00
.byte "GRAPHICS.TK",$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
@ -8404,7 +8409,8 @@ glyph_bitmaps:
.byte $00,$00,$00,$00,$00,$00
;; Entry point for "DESKTOP"
jmp L93BC
.assert * = $8E00, error, "DESKTOP entry point must be at $8E00"
jmp DESKTOP_DIRECT
L8E03: .byte $08,$00
L8E05: .byte $00
@ -8464,12 +8470,12 @@ voff: .word 0
.byte $00,$00
L8E43: .byte $00,$00
fill_rect_params6: .byte $00
L8E46: .byte $00,$00,$00
L8E49: .byte $00
L8E4A: .byte $00
L8E4B: .byte $00
L8E4C: .byte $00
.proc fill_rect_params6
left: .word 0
top: .word 0
right: .word 0
bottom: .word 0
.endproc
.proc measure_text_params
addr: .addr text_buffer
@ -8630,6 +8636,8 @@ font: .addr 0
.byte $00,$00,$00
.byte $00,$FF,$80
;; Is this more of a generic "addr of a 0" "...of a 1" etc?
set_fill_mode_params:
.byte $00
set_fill_mode_params2:
@ -8651,8 +8659,15 @@ L939F: .byte $00,$19,$94,$54,$94,$C0,$94,$08
.byte $8F
.byte $95
.macro DESKTOP_DIRECT_CALL op, addr, label
jsr DESKTOP_DIRECT
.byte op
.addr addr
.endmacro
;; DESKTOP entry point (after jump)
L93BC: pla
DESKTOP_DIRECT:
pla
sta L9413
clc
adc #$03
@ -8691,9 +8706,9 @@ L93CF: lda $06,x
lda ($06),y
sta $07
stx $06
.byte $20
L9404: .byte 0
L9405: .byte 0
L9404 := * + 1
L9405 := * + 2
jsr $0000
tay
ldx #$03
L9409: pla
@ -8925,9 +8940,7 @@ L9625: lda L9454
beq L9639
lda L9017
sta L95A5
jsr L93BC
.byte $0B
lda $95
DESKTOP_DIRECT_CALL $B, $95A5
jmp L9625
L9639: ldx #$7E
@ -8967,9 +8980,7 @@ L967A: lda L95A6,x
rts
L9681: sta L95A5
jsr L93BC
.byte $02
lda $95
DESKTOP_DIRECT_CALL $2, $95A5
pla
tax
inx
@ -9002,11 +9013,8 @@ L969D: ldx L9696
ldy #$00
cmp ($06),y
bne L969D
jsr L93BC
tsb $95
stx $4C,y
.byte $9D
.byte $96
DESKTOP_DIRECT_CALL $4, $9695
jmp L969D
L96CF: lda #$00
rts
@ -9197,6 +9205,7 @@ L9832: .byte $00
L9833: .byte $00
L9834: .byte $00
L9835: .byte $00,$00,$00,$00,$00,$00,$00,$00
L983D: lda #$00
sta L9830
sta L9833
@ -9284,8 +9293,7 @@ L98F2: lda L9016,x
ldx #$80
stx L9833
L9909: sta L9834
jsr L93BC
ora L9834
DESKTOP_DIRECT_CALL $D, $9834
beq L9954
jsr LA18A
lda L9C74
@ -9430,18 +9438,14 @@ L9A33: lda query_target_params2,x
beq L9A84
lda L9831
sta query_target_params2::id
jsr L93BC
ora #$3F
.byte $93
DESKTOP_DIRECT_CALL $9, $933F
lda query_target_params2::element
cmp L9830
beq L9A84
A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2
A2D_CALL A2D_SET_FILL_MODE, set_fill_mode_params3
A2D_CALL $16, L9096
jsr L93BC
.byte $0B
bmi $9A05 ; ???
DESKTOP_DIRECT_CALL $B, $9830
A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2
A2D_CALL A2D_SET_FILL_MODE, set_fill_mode_params3
A2D_CALL $16, L9096
@ -9575,9 +9579,7 @@ L9B9C: A2D_CALL $16, L9096
L9BA5: A2D_CALL $16, L9096
lda L9830
beq L9BB9
jsr L93BC
.byte $0B
bmi L9B4E
DESKTOP_DIRECT_CALL $B, $9830
jmp L9C63
L9BB9: A2D_CALL A2D_QUERY_TARGET, query_target_params2
@ -9877,9 +9879,7 @@ L9E1D: A2D_CALL A2D_QUERY_TARGET, query_target_params2
lda query_target_params2::element
bne L9E2B
sta query_target_params2::id
L9E2B: jsr L93BC
ora #$3F
.byte $93
L9E2B: DESKTOP_DIRECT_CALL $9, $933F
lda query_target_params2::element
bne L9E39
jmp L9E97
@ -9911,9 +9911,7 @@ L9E6A: sta L9830
A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2
A2D_CALL A2D_SET_FILL_MODE, set_fill_mode_params3
A2D_CALL $16, L9096
jsr L93BC
.byte $02
bmi L9E1D
DESKTOP_DIRECT_CALL $2, $9830
A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2
A2D_CALL A2D_SET_FILL_MODE, set_fill_mode_params3
A2D_CALL $16, L9096
@ -9956,10 +9954,8 @@ L9ECB: ldx L9016
L9EEA: ldy #$00
lda ($06),y
sta L9EC2
jsr L93BC
.byte $03
.byte $C2
stz a:$A9,x
DESKTOP_DIRECT_CALL $3, $9EC2
lda #0
rts
rts
@ -10072,7 +10068,7 @@ L9FCF: lda ($08),y
L9FDF: jsr LA382
ldy #$09
L9FE4: lda ($06),y
sta L8E4B,y
sta fill_rect_params6::bottom,y
iny
cpy #$1D
bne L9FE4
@ -10141,7 +10137,7 @@ LA085: jsr LA6A3
A2D_CALL A2D_SET_BOX, query_screen_params
rts
LA097: A2D_CALL A2D_HIDE_CURSOR, $93BC ; These params should be ignored - bogus?
LA097: A2D_CALL A2D_HIDE_CURSOR, DESKTOP_DIRECT ; These params should be ignored - bogus?
A2D_CALL A2D_SET_FILL_MODE, set_fill_mode_params5
bit L9F92
bpl LA0C2
@ -10208,24 +10204,24 @@ LA14F: lda draw_bitmap_params2::left,x
sta fill_rect_params6,x
lda draw_bitmap_params2::left+1,x
adc draw_bitmap_params2::hoff+1,x
sta L8E46,x
sta fill_rect_params6::left+1,x
lda draw_bitmap_params2::left,x
clc
adc draw_bitmap_params2::width,x
sta L8E49,x
sta fill_rect_params6::right,x
lda draw_bitmap_params2::left+1,x
adc draw_bitmap_params2::width+1,x
sta L8E4A,x
sta fill_rect_params6::right+1,x
inx
inx
cpx #$04
bne LA14F
lda L8E4B
lda fill_rect_params6::bottom
sec
sbc #$01
sta L8E4B
sta fill_rect_params6::bottom
bcs LA189
dec L8E4C
dec fill_rect_params6::bottom+1
LA189: rts
LA18A: jsr LA365
@ -10372,9 +10368,7 @@ LA2B5: bmi LA2AA
ldy #$00
lda ($06),y
sta LA2A9
jsr L93BC
.byte $03
lda #$A2
DESKTOP_DIRECT_CALL $3, $A2A9
LA2DD: pla
tax
dex
@ -10587,13 +10581,10 @@ LA49D: ldy #$00
bit LA3B7
bpl LA4AC
jsr LA4D3
LA4AC: jsr L93BC
ora LA3AE
LA4AC: DESKTOP_DIRECT_CALL $D, $A3AE
beq LA4BA
jsr L93BC
.byte $03
.addr $A3AE
DESKTOP_DIRECT_CALL $3, $A3AE
LA4BA: bit LA3B7
bpl LA4C5