a2d/desktop/desktop.s

21349 lines
492 KiB
ArmAsm
Raw Normal View History

2018-01-18 03:19:01 +00:00
.setcpu "6502"
2017-10-12 15:04:27 +00:00
2017-12-31 03:21:34 +00:00
.include "apple2.inc"
.include "../inc/apple2.inc"
.include "../inc/auxmem.inc"
.include "../inc/prodos.inc"
2018-01-29 05:18:00 +00:00
.include "../mgtk.inc"
.include "../desktop.inc"
2017-12-31 03:21:34 +00:00
;;; ==================================================
;;; DeskTop - the actual application
;;; ==================================================
2018-02-01 18:00:17 +00:00
INVOKER := $290 ; Invoke other programs
INVOKER_FILENAME := $280 ; File to invoke (PREFIX must be set)
2018-02-01 18:00:17 +00:00
dummy0000 := $0000 ; overwritten by self-modified code
dummy1234 := $1234 ; overwritten by self-modified code
2018-01-17 03:36:54 +00:00
2018-01-11 05:56:19 +00:00
.macro addr_call target, addr
lda #<addr
ldx #>addr
jsr target
.endmacro
.macro addr_jump target, addr
lda #<addr
ldx #>addr
jmp target
.endmacro
2018-01-23 02:09:15 +00:00
.macro axy_call target, yparam, addr
2018-01-17 04:03:29 +00:00
lda #<addr
ldx #>addr
ldy #yparam
jsr target
.endmacro
2018-01-23 02:09:15 +00:00
.macro yax_call target, yparam, addr
2018-01-17 04:03:29 +00:00
ldy #yparam
lda #<addr
ldx #>addr
jsr target
.endmacro
2018-01-23 02:09:15 +00:00
.macro yxa_call target, yparam, addr
ldy #yparam
ldx #>addr
lda #<addr
jsr target
.endmacro
.macro yxa_jump target, yparam, addr
ldy #yparam
ldx #>addr
lda #<addr
jmp target
.endmacro
2018-01-17 04:03:29 +00:00
2018-01-29 05:18:00 +00:00
.macro MGTK_RELAY_CALL call, addr
.if .paramcount > 1
2018-01-29 05:18:00 +00:00
yax_call MGTK_RELAY, (call), (addr)
.else
2018-01-29 05:18:00 +00:00
yax_call MGTK_RELAY, (call), 0
.endif
.endmacro
2018-01-21 03:33:15 +00:00
.macro PAD_TO addr
.res addr - *, 0
.endmacro
2018-01-06 05:17:13 +00:00
;;; ==================================================
2018-01-29 05:18:00 +00:00
;;; Segment loaded into AUX $851F-$BFFF (follows MGTK)
2018-01-06 05:17:13 +00:00
;;; ==================================================
.proc desktop_aux
.org $851F
;;; ==================================================
;;; This chunk of code appears to be used by one or more
;;; of the dynamically loaded segments.
.byte $03
.addr $85E9
L8522: php
lda $E904,x
sta $09
ldy #$14
ldx #$00
L852C: lda ($08),y
sta L8590,x
iny
inx
cpx #$04
bne L852C
ldy #$1C
ldx #$00
L853B: lda ($08),y
sta L8594,x
iny
inx
cpx #$04
bne L853B
ldy #$03
lda ($06),y
sec
sbc L8590
sta ($06),y
iny
lda ($06),y
sbc L8591
sta ($06),y
iny
lda ($06),y
sec
sbc L8592
sta ($06),y
iny
lda ($06),y
sbc L8593
sta ($06),y
ldy #$03
lda ($06),y
clc
adc L8594
sta ($06),y
iny
lda ($06),y
adc L8595
sta ($06),y
iny
lda ($06),y
clc
adc L8596
sta ($06),y
iny
lda ($06),y
adc L8597
sta ($06),y
jsr $83A5
rts
L8590: .byte $24
L8591: .byte $00
L8592: .byte $23
L8593: .byte $00
L8594: .byte $00
L8595: .byte $00
L8596: .byte $00
L8597: .byte $00
lda #$00
ldx #$00
L859C: sta $D409,x
sta $D401,x
sta $D40D
inx
cpx #$04
bne L859C
lda #$0A
sta $D40D
sta $D40F
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetPort, $D401
rts
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1A39
ldx $D5CA
txs
rts
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1A56
ldx $D5CA
txs
rts
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1A71
ldx $D5CA
txs
rts
cmp #$27
bne L85F2
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1B22
ldx $D5CA
txs
jmp L8625
L85F2: cmp #$45
bne L8604
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1B3B
ldx $D5CA
txs
jmp L8625
L8604: cmp #$52
bne L8616
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1B5B
ldx $D5CA
txs
jmp L8625
L8616: cmp #$57
bne L8625
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1B7C
ldx $D5CA
txs
2018-01-31 03:04:33 +00:00
L8625: MGTK_RELAY_CALL MGTK::HiliteMenu, winfo18_port ; ???
rts
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1B9C
ldx $D5CA
txs
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::HiliteMenu, winfo18_port ; ???
rts
2018-01-23 15:48:49 +00:00
addr_call $6B17, $1BBF
ldx $D5CA
txs
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::HiliteMenu, winfo18_port ; ???
rts
sta L8737
sty L8738
and #$F0
sta online_params_unit
sta ALTZPOFF
MLI_CALL ON_LINE, online_params
sta ALTZPON
beq L867B
L8672: pha
dec $EF8A
dec $EF88
pla
rts
L867B: lda online_params_buffer
beq L8672
jsr $8388 ; into dynamically loaded code???
jsr DESKTOP_FIND_SPACE ; AUX > MAIN call???
ldy L8738
sta $D464,y
asl a
tax
2018-01-24 23:39:12 +00:00
lda $F13A,x ; ???
sta $06
2018-01-24 23:39:12 +00:00
lda $F13A+1,x
sta $06+1
ldx #$00
ldy #$09
2018-01-24 04:11:38 +00:00
lda #' '
L869E: sta ($06),y
iny
inx
cpx #$12
bne L869E
ldy #$09
lda online_params_buffer
and #$0F
sta online_params_buffer
sta ($06),y
ldx #$00
ldy #$0B
L86B6: lda online_params_buffer+1,x
cmp #$41
bcc L86C4
cmp #$5F
bcs L86C4
clc
adc #$20
L86C4: sta ($06),y
iny
inx
cpx online_params_buffer
bne L86B6
ldy #$09
lda ($06),y
clc
adc #$02
sta ($06),y
lda L8737
and #$0F
cmp #$04
bne L86ED
ldy #$07
lda #$B4
sta ($06),y
iny
lda #$14
sta ($06),y
jmp L870A
L86ED: cmp #$0B
bne L86FF
ldy #$07
lda #$70
sta ($06),y
iny
lda #$14
sta ($06),y
jmp L870A
L86FF: ldy #$07
lda #$40
sta ($06),y
iny
lda #$14
sta ($06),y
L870A: ldy #$02
lda #$00
sta ($06),y
inc L8738
lda L8738
asl a
asl a
tax
ldy #$03
L871B: lda L8739,x
sta ($06),y
inx
iny
cpy #$07
bne L871B
ldx $EF8A
dex
ldy #$00
lda ($06),y
sta $EF8B,x
jsr $83A5
lda #$00
rts
L8737: rts
L8738: .byte $04
L8739: .byte $00,$00,$00,$00
;; Desktop icon placements?
L873D: DEFINE_POINT 500, 16
DEFINE_POINT 500, 41
DEFINE_POINT 500, 66
DEFINE_POINT 500, 91
DEFINE_POINT 500, 116
DEFINE_POINT 440, 16
DEFINE_POINT 440, 41
DEFINE_POINT 440, 66
DEFINE_POINT 440, 91
DEFINE_POINT 440, 116
DEFINE_POINT 440, 141
DEFINE_POINT 400, 16
DEFINE_POINT 400, 41
DEFINE_POINT 400, 66
.proc online_params
count: .byte 2
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
.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
.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
.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
.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
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$C8
;;; ==================================================
.include "font.inc"
;;; ==================================================
;; ???
L8C83: .byte $00,$00,$00,$00,$77,$30,$01
.byte $00,$00,$7F,$00,$00,$7F,$00,$00
.byte $00,$00,$00,$7A,$00,$00,$00,$00
.byte $00,$14,$55,$2A,$00,$7F,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$01,$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
.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
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $0E,$00,$00,$07,$00,$00,$00,$00
.byte $00,$03,$18,$00,$00,$00,$00,$00
.byte $00,$00,$0E,$00,$00,$00,$00,$00
2018-01-21 03:33:15 +00:00
.assert * = $8D02, error, "Segment length mismatch"
PAD_TO $8E00
;;; ==================================================
;; Entry point for "DESKTOP"
.assert * = DESKTOP, error, "DESKTOP entry point must be at $8E00"
jmp DESKTOP_DIRECT
2018-01-29 05:18:00 +00:00
.macro MGTK_RELAY2_CALL call, addr
2018-01-23 02:09:15 +00:00
.if .paramcount > 1
2018-01-29 05:18:00 +00:00
yax_call MGTK_RELAY2, (call), (addr)
2018-01-23 02:09:15 +00:00
.else
2018-01-29 05:18:00 +00:00
yax_call MGTK_RELAY2, (call), 0
2018-01-23 02:09:15 +00:00
.endif
.endmacro
L8E03: .byte $08,$00
L8E05: .byte $00
L8E06: .byte $00
L8E07: .byte $00
L8E08: .byte $00
L8E09: .byte $00
L8E0A: .byte $00
L8E0B: .byte $00
L8E0C: .byte $00
L8E0D: .byte $00
L8E0E: .byte $00
L8E0F: .byte $00
L8E10: .byte $00
L8E11: .byte $00
L8E12: .byte $00
L8E13: .byte $00
L8E14: .byte $00
L8E15: .byte $00
L8E16: .byte $00
L8E17: .byte $00
L8E18: .byte $00
L8E19: .byte $00
L8E1A: .byte $00
L8E1B: .byte $00
L8E1C: .byte $00
L8E1D: .byte $00
L8E1E: .byte $00
L8E1F: .byte $00
L8E20: .byte $00
L8E21: .byte $00
L8E22: .byte $00
L8E23: .byte $00
L8E24: .byte $00
2018-01-30 16:57:36 +00:00
.proc paintbits_params2
2018-01-31 05:42:26 +00:00
DEFINE_POINT 0, 0, viewloc
2018-01-30 07:58:53 +00:00
mapbits: .addr 0
2018-01-31 05:22:13 +00:00
mapwidth: .byte 0
reserved: .byte 0
DEFINE_RECT 0,0,0,0,maprect
.endproc
2018-01-30 16:57:36 +00:00
.proc paintbits_params
2018-01-31 05:42:26 +00:00
DEFINE_POINT 0, 0, viewloc
2018-01-30 07:58:53 +00:00
mapbits: .addr 0
2018-01-31 05:22:13 +00:00
mapwidth: .byte 0
reserved: .byte 0
2018-01-31 05:42:26 +00:00
DEFINE_RECT 0,0,0,0,maprect
.endproc
2018-01-30 16:57:36 +00:00
.proc paintrect_params6
left: .word 0
top: .word 0
right: .word 0
bottom: .word 0
.endproc
2018-01-30 16:57:36 +00:00
.proc textwidth_params
2018-01-31 05:42:26 +00:00
textptr: .addr text_buffer
textlen: .byte 0
result: .word 0
.endproc
2018-01-31 05:42:26 +00:00
set_text_mask_params := textwidth_params::result + 1 ; re-used
2018-01-30 16:57:36 +00:00
.proc drawtext_params
2018-01-31 05:42:26 +00:00
textptr: .addr text_buffer
textlen: .byte 0
.endproc
text_buffer:
.res 19, 0
2018-01-21 16:37:01 +00:00
white_pattern:
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte $FF
black_pattern:
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte $FF
checkerboard_pattern2:
.byte %01010101
.byte %10101010
.byte %01010101
.byte %10101010
.byte %01010101
.byte %10101010
.byte %01010101
.byte %10101010
.byte $FF
dark_pattern:
.byte %00010001
.byte %01000100
.byte %00010001
.byte %01000100
.byte %00010001
.byte %01000100
.byte %00010001
.byte %01000100
.byte $FF
light_pattern:
.byte %11101110
.byte %10111011
.byte %11101110
.byte %10111011
.byte %11101110
.byte %10111011
.byte %11101110
.byte %10111011
L8E94: .byte $FF
L8E95:
L8E96 := * + 1
L8E97 := * + 2
.res 128, 0
L8F15: .res 256, 0
L9015: .byte $00
L9016: .byte $00
L9017: .byte $00
L9018: .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
.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
.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
.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
.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
.byte $00,$00,$00,$00,$00,$00
drag_outline_buffer:
.res 680, 0
L933E: .byte $00
2018-01-30 16:57:36 +00:00
.proc findwindow_params2
2018-01-31 05:42:26 +00:00
mousex: .word 0
mousey: .word 0
which_area:.byte 0
window_id: .byte 0
.endproc
2018-01-21 22:35:37 +00:00
screen_width := 560
screen_height := 192
2018-01-30 16:57:36 +00:00
.proc grafport
left: .word 0
top: .word 0
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, screen_width-1, screen_height-1
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte $96 ; ???
2018-01-30 07:58:53 +00:00
textbg: .byte 0
fontptr: .addr DEFAULT_FONT
.endproc
2018-01-30 16:57:36 +00:00
.proc getwinport_params
2018-01-31 05:42:26 +00:00
window_id: .byte 0
a_grafport: .addr grafport4
.endproc
2018-01-30 16:57:36 +00:00
.proc grafport4
left: .word 0
top: .word 0
2018-01-30 07:58:53 +00:00
mapbits: .addr 0
mapwidth: .word 0
cliprect_x1: .word 0
cliprect_y1: .word 0
width: .word 0
height: .word 0
2018-01-31 03:04:33 +00:00
penpattern:.res 8, 0
2018-01-30 07:58:53 +00:00
colormasks: .byte 0, 0
penloc: DEFINE_POINT 0, 0
penwidth: .byte 0
penheight: .byte 0
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte 0
fontptr: .addr 0
.endproc
.byte $00,$00,$00
.byte $00,$FF,$80
;; Used for FILL_MODE params
2018-01-30 16:57:36 +00:00
pencopy_2:.byte 0
penOR_2:.byte 1
penXOR_2:.byte 2
penBIC_2:.byte 3
notpencopy_2:.byte 4
notpenOR_2: .byte 5
notpenXOR_2: .byte 6
notpenBIC_2: .byte 7
;; DESKTOP command jump table
L939E: .addr 0 ; $00
.addr L9419 ; $01
.addr L9454 ; $02
.addr L94C0 ; $03
.addr L9508 ; $04
.addr L95A2 ; $05
.addr L9692 ; $06
.addr L96D2 ; $07
.addr L975B ; $08
.addr L977D ; $09
.addr L97F7 ; $0A
.addr L9EBE ; $0B
2018-01-20 22:31:48 +00:00
.addr DESKTOP_REDRAW_ICONS_IMPL ; $0C REDRAW_ICONS
.addr L9EFB ; $0D
.addr L958F ; $0E
.macro DESKTOP_DIRECT_CALL op, addr, label
jsr DESKTOP_DIRECT
2018-01-21 22:35:37 +00:00
.byte op
.addr addr
.endmacro
;; DESKTOP entry point (after jump)
DESKTOP_DIRECT:
;; Stash return value from stack, adjust by 3
;; (command byte, params addr)
pla
sta call_params
clc
adc #<3
tax
pla
sta call_params+1
adc #>3
pha
txa
pha
;; Save $06..$09 on the stack
ldx #0
: lda $06,x
pha
inx
cpx #4
bne :-
;; Point ($06) at call command
lda call_params
clc
adc #<1
sta $06
lda call_params+1
adc #>1
sta $07
ldy #0
lda ($06),y
asl a
tax
lda L939E,x
sta dispatch + 1
lda L939E+1,x
sta dispatch + 2
iny
lda ($06),y
tax
iny
lda ($06),y
sta $07
stx $06
dispatch:
2018-01-17 03:36:54 +00:00
jsr dummy0000
tay
ldx #$03
L9409: pla
sta $06,x
dex
cpx #$FF
bne L9409
tya
rts
call_params: .addr 0
2018-01-30 16:57:36 +00:00
.proc moveto_params2
xcoord: .word 0
ycoord: .word 0
.endproc
;;; ==================================================
;;; DESKTOP $01 IMPL
2018-01-22 07:00:34 +00:00
.proc L9419
ldy #$00
lda ($06),y
ldx L8E95
beq L9430
dex
2018-01-14 05:20:59 +00:00
L9423: cmp L8E96,x
beq L942D
dex
bpl L9423
bmi L9430
2018-01-14 05:20:59 +00:00
L942D: lda #$01
rts
L9430: jsr L943E
jsr L9F98
lda #$01
tay
sta ($06),y
lda #$00
rts
L943E: ldx L8E95
sta L8E96,x
inc L8E95
asl a
tax
lda $06
sta L8F15,x
lda $07
sta L8F15+1,x
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $02 IMPL
2018-01-22 07:00:34 +00:00
.proc L9454
ldx L8E95
beq L9466
dex
ldy #$00
lda ($06),y
L945E: cmp L8E96,x
beq L9469
dex
bpl L945E
L9466: lda #$01
rts
L9469: asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$01
lda ($06),y
bne L947E
lda #$02
rts
L947E: lda L9015
beq L9498
dey
lda ($06),y
ldx L9016
dex
L948A: cmp L9017,x
beq L9495
dex
bpl L948A
jmp L949D
L9495: lda #$03
rts
L9498: lda #$01
sta L9015
L949D: ldx L9016
ldy #$00
lda ($06),y
sta L9017,x
inc L9016
lda ($06),y
ldx #$01
jsr LA324
ldy #$00
lda ($06),y
ldx #$01
jsr LA2E3
jsr L9F9F
lda #$00
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $03 IMPL
2018-01-22 07:00:34 +00:00
.proc L94C0
ldx L8E95
beq L94D2
dex
ldy #$00
lda ($06),y
L94CA: cmp L8E96,x
beq L94D5
dex
bpl L94CA
L94D2: lda #$01
rts
L94D5: asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
lda L9015
bne L94E9
jmp L9502
L94E9: ldx L9016
dex
ldy #$00
lda ($06),y
L94F1: cmp L9017,x
beq L94FC
dex
bpl L94F1
jmp L9502
L94FC: jsr L9F9F
lda #$00
rts
L9502: jsr L9F98
lda #$00
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $04 IMPL
2018-01-22 07:00:34 +00:00
.proc L9508
ldy #$00
ldx L8E95
beq L951A
dex
lda ($06),y
L9512: cmp L8E96,x
beq L951D
dex
bpl L9512
L951A: lda #$01
rts
L951D: asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$01
lda ($06),y
bne L9532
lda #$02
rts
L9532: jsr LA18A
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, pencopy_2
jsr LA39D
ldy #$00
lda ($06),y
ldx L8E95
jsr LA2E3
dec L8E95
lda #$00
ldx L8E95
sta L8E96,x
ldy #$01
lda #$00
sta ($06),y
lda L9015
beq L958C
ldx L9016
dex
ldy #$00
lda ($06),y
L9566: cmp L9017,x
beq L9571
dex
bpl L9566
jmp L958C
L9571: ldx L9016
jsr LA324
dec L9016
lda L9016
bne L9584
lda #$00
sta L9015
L9584: lda #$00
ldx L9016
sta L9017,x
L958C: lda #$00
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $0E IMPL
2018-01-22 07:00:34 +00:00
.proc L958F
ldy #$00
lda ($06),y
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
jmp LA39D
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $05 IMPL
2018-01-22 07:00:34 +00:00
.proc L95A2
jmp L9625
L95A5:
L95A6 := * + 1
.res 128, 0
L9625: lda L9454
beq L9639
lda L9017
sta L95A5
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $B, L95A5
jmp L9625
L9639: ldx #$7E
lda #$00
L963D: sta L95A6,x
dex
bpl L963D
ldx #$00
stx L95A5
L9648: lda L8E96,x
asl a
tay
lda L8F15,y
sta $08
lda L8F15+1,y
2018-01-21 19:47:40 +00:00
sta $08+1
ldy #$02
lda ($08),y
and #$0F
ldy #$00
cmp ($06),y
bne L9670
ldy #$00
lda ($08),y
ldy L95A5
sta L95A6,y
inc L95A5
L9670: inx
cpx L8E95
bne L9648
ldx #$00
txa
pha
L967A: lda L95A6,x
bne L9681
pla
rts
L9681: sta L95A5
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $2, L95A5
pla
tax
inx
txa
pha
jmp L967A
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $06 IMPL
2018-01-22 07:00:34 +00:00
.proc L9692
jmp L9697
L9695: .byte 0
L9696: .byte 0
L9697: lda L8E95
sta L9696
L969D: ldx L9696
cpx #$00
beq L96CF
dec L9696
dex
lda L8E96,x
sta L9695
asl a
tax
lda L8F15,x
sta $08
lda L8F15+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
ldy #$02
lda ($08),y
and #$0F
ldy #$00
cmp ($06),y
bne L969D
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $4, L9695
jmp L969D
L96CF: lda #$00
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $07 IMPL
2018-01-22 07:00:34 +00:00
.proc L96D2
jmp L96D7
L96D5: .byte 0
L96D6: .byte 0
L96D7: lda L8E95
sta L96D6
L96DD: ldx L96D6
bne L96E5
lda #$00
rts
L96E5: dec L96D6
dex
lda L8E96,x
sta L96D5
asl a
tax
lda L8F15,x
sta $08
lda L8F15+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
ldy #$02
lda ($08),y
and #$0F
ldy #$00
cmp ($06),y
bne L96DD
ldy #$00
lda ($08),y
ldx L8E95
jsr LA2E3
dec L8E95
lda #$00
ldx L8E95
sta L8E96,x
ldy #$01
lda #$00
sta ($08),y
lda L9015
beq L9758
ldx #$00
ldy #$00
L972B: lda ($08),y
cmp L9017,x
beq L973B
inx
cpx L9016
bne L972B
jmp L9758
L973B: lda ($08),y
ldx L9016
jsr LA324
dec L9016
lda L9016
bne L9750
lda #$00
sta L9015
L9750: lda #$00
ldx L9016
sta L9017,x
L9758: jmp L96DD
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $08 IMPL
2018-01-22 07:00:34 +00:00
.proc L975B
ldx #$00
txa
tay
L975F: sta ($06),y
iny
inx
cpx #$14
bne L975F
ldx #$00
ldy #$00
L976B: lda L9017,x
sta ($06),y
cpx L9016
beq L977A
iny
inx
jmp L976B
L977A: lda #$00
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $09 IMPL
2018-01-22 07:00:34 +00:00
.proc L977D
jmp L9789
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
L9789: ldy #$03
L978B: lda ($06),y
2018-01-30 16:57:36 +00:00
sta moveto_params2,y
dey
bpl L978B
lda $06
sta $08
2018-01-21 19:47:40 +00:00
lda $06+1
sta $08+1
ldy #$05
lda ($06),y
sta L97F5
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::MoveTo, moveto_params2
ldx #$00
L97AA: cpx L8E95
bne L97B9
ldy #$04
lda #$00
sta ($08),y
sta L97F6
rts
L97B9: txa
pha
lda L8E96,x
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$02
lda ($06),y
and #$0F
cmp L97F5
bne L97E0
jsr LA18A
2018-01-29 16:38:23 +00:00
MGTK_CALL MGTK::InPoly, L8E03
bne L97E6
L97E0: pla
tax
inx
jmp L97AA
L97E6: pla
tax
lda L8E96,x
ldy #$04
sta ($08),y
sta L97F6
rts
rts
.byte 0
L97F5: .byte 0
L97F6: .byte 0
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $0A IMPL
2018-01-22 07:00:34 +00:00
.proc L97F7
ldy #$00
lda ($06),y
sta L982A
tya
sta ($06),y
ldy #$04
L9803: lda ($06),y
sta L9C8D,y
sta L9C91,y
dey
cpy #$00
bne L9803
jsr LA365
lda L982A
jsr L9EB4
sta $06
stx $07
ldy #$02
lda ($06),y
and #$0F
sta L9829
jmp L983D
L9829: .byte $00
L982A: .byte $00,$00
L982C: .byte $00
L982D: .byte $00
L982E: .byte $00
L982F: .byte $00
L9830: .byte $00
L9831: .byte $00
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
2018-01-29 16:38:23 +00:00
L9845: MGTK_CALL MGTK::PeekEvent, L933E
lda L933E
cmp #$04
beq L9857
L9852: lda #$02
jmp L9C65
2018-01-31 05:42:26 +00:00
L9857: lda findwindow_params2::mousex
sec
sbc L9C8E
sta L982C
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousex+1
sbc L9C8F
sta L982D
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousey
sec
sbc L9C90
sta L982E
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousey+1
sbc L9C91
sta L982F
lda L982D
bpl L988C
lda L982C
cmp #$FB
bcc L98AC
jmp L9893
L988C: lda L982C
cmp #$05
bcs L98AC
L9893: lda L982F
bpl L98A2
lda L982E
cmp #$FB
bcc L98AC
jmp L9845
L98A2: lda L982E
cmp #$05
bcs L98AC
jmp L9845
L98AC: lda L9016
cmp #$15
bcc L98B6
jmp L9852
L98B6: lda #<drag_outline_buffer
sta $08
lda #>drag_outline_buffer
sta $08+1
lda L9015
bne L98C8
lda #$03
jmp L9C65
L98C8: lda L9017
jsr L9EB4
sta $06
stx $07
ldy #$02
lda ($06),y
and #$0F
sta L9832
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::InitPort, grafport
ldx #$07
2018-01-31 05:22:13 +00:00
L98E3: lda grafport::cliprect,x
sta L9835,x
dex
bpl L98E3
ldx L9016
stx L9C74
L98F2: lda L9016,x
jsr L9EB4
sta $06
stx $07
ldy #$00
lda ($06),y
cmp #$01
bne L9909
ldx #$80
stx L9833
L9909: sta L9834
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $D, L9834
beq L9954
jsr LA18A
lda L9C74
cmp L9016
beq L9936
jsr LA365
lda $08
sec
sbc #$22
sta $08
bcs L992D
2018-01-21 19:47:40 +00:00
dec $08+1
L992D: ldy #$01
lda #$80
sta ($08),y
jsr LA382
L9936: ldx #$21
ldy #$21
L993A: lda L8E03,x
sta ($08),y
dey
dex
bpl L993A
lda #$08
ldy #$00
sta ($08),y
lda $08
clc
adc #$22
sta $08
bcc L9954
2018-01-21 19:47:40 +00:00
inc $08+1
L9954: dec L9C74
beq L995F
ldx L9C74
jmp L98F2
L995F: ldx #$07
L9961: lda drag_outline_buffer+2,x
sta L9C76,x
dex
bpl L9961
lda #<drag_outline_buffer
sta $08
lda #>drag_outline_buffer
sta $08+1
L9972: ldy #$02
L9974: lda ($08),y
cmp L9C76
iny
lda ($08),y
sbc L9C77
bcs L9990
lda ($08),y
sta L9C77
dey
lda ($08),y
sta L9C76
iny
jmp L99AA
L9990: dey
lda ($08),y
cmp L9C7A
iny
lda ($08),y
sbc L9C7B
bcc L99AA
lda ($08),y
sta L9C7B
dey
lda ($08),y
sta L9C7A
iny
L99AA: iny
lda ($08),y
cmp L9C78
iny
lda ($08),y
sbc L9C79
bcs L99C7
lda ($08),y
sta L9C79
dey
lda ($08),y
sta L9C78
iny
jmp L99E1
L99C7: dey
lda ($08),y
cmp L9C7C
iny
lda ($08),y
sbc L9C7D
bcc L99E1
lda ($08),y
sta L9C7D
dey
lda ($08),y
sta L9C7C
iny
L99E1: iny
cpy #$22
bne L9974
ldy #$01
lda ($08),y
beq L99FC
lda $08
clc
adc #$22
sta $08
2018-01-21 19:47:40 +00:00
lda $08+1
adc #$00
2018-01-21 19:47:40 +00:00
sta $08+1
jmp L9972
2018-01-29 05:18:00 +00:00
L99FC: MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penXOR_2
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::FramePoly, drag_outline_buffer
2018-01-29 16:38:23 +00:00
L9A0E: MGTK_CALL MGTK::PeekEvent, L933E
lda L933E
cmp #$04
beq L9A1E
jmp L9BA5
L9A1E: ldx #$03
2018-01-30 16:57:36 +00:00
L9A20: lda findwindow_params2,x
cmp L9C92,x
bne L9A31
dex
bpl L9A20
jsr L9E14
jmp L9A0E
L9A31: ldx #$03
2018-01-30 16:57:36 +00:00
L9A33: lda findwindow_params2,x
sta L9C92,x
dex
bpl L9A33
lda L9830
beq L9A84
lda L9831
2018-01-31 05:42:26 +00:00
sta findwindow_params2::window_id
2018-01-30 16:57:36 +00:00
DESKTOP_DIRECT_CALL $9, findwindow_params2
2018-01-31 05:42:26 +00:00
lda findwindow_params2::which_area
cmp L9830
beq L9A84
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penXOR_2
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::FramePoly, drag_outline_buffer
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $B, L9830
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penXOR_2
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::FramePoly, drag_outline_buffer
lda #$00
sta L9830
2018-01-31 05:42:26 +00:00
L9A84: lda findwindow_params2::mousex
sec
sbc L9C8E
sta L9C96
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousex+1
sbc L9C8F
sta L9C97
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousey
sec
sbc L9C90
sta L9C98
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousey+1
sbc L9C91
sta L9C99
jsr L9C9E
ldx #$00
L9AAF: lda L9C7A,x
clc
adc L9C96,x
sta L9C7A,x
lda L9C7B,x
adc L9C97,x
sta L9C7B,x
lda L9C76,x
clc
adc L9C96,x
sta L9C76,x
lda L9C77,x
adc L9C97,x
sta L9C77,x
inx
inx
cpx #$04
bne L9AAF
lda #$00
sta L9C75
lda L9C77
bmi L9AF7
lda L9C7A
cmp #$30
lda L9C7B
sbc #$02
bcs L9AFE
jsr L9DFA
jmp L9B0E
L9AF7: jsr L9CAA
bmi L9B0E
bpl L9B03
L9AFE: jsr L9CD1
bmi L9B0E
L9B03: jsr L9DB8
lda L9C75
ora #$80
sta L9C75
L9B0E: lda L9C79
bmi L9B31
lda L9C78
cmp #$0D
lda L9C79
sbc #$00
bcc L9B31
lda L9C7C
cmp #$C0
lda L9C7D
sbc #$00
bcs L9B38
jsr L9E07
jmp L9B48
L9B31: jsr L9D31
bmi L9B48
bpl L9B3D
L9B38: jsr L9D58
bmi L9B48
L9B3D: jsr L9DD9
lda L9C75
ora #$40
sta L9C75
L9B48: bit L9C75
bpl L9B52
2018-01-13 04:58:02 +00:00
bvc L9B52
jmp L9A0E
2018-01-29 05:18:00 +00:00
L9B52: MGTK_CALL MGTK::FramePoly, drag_outline_buffer
lda #<drag_outline_buffer
sta $08
lda #>drag_outline_buffer
sta $08+1
L9B60: ldy #$02
L9B62: lda ($08),y
clc
adc L9C96
sta ($08),y
iny
lda ($08),y
adc L9C97
sta ($08),y
iny
lda ($08),y
clc
adc L9C98
sta ($08),y
iny
lda ($08),y
adc L9C99
sta ($08),y
iny
cpy #$22
bne L9B62
ldy #$01
lda ($08),y
beq L9B9C
lda $08
clc
adc #$22
sta $08
bcc L9B99
2018-01-21 19:47:40 +00:00
inc $08+1
L9B99: jmp L9B60
2018-01-29 05:18:00 +00:00
L9B9C: MGTK_CALL MGTK::FramePoly, drag_outline_buffer
jmp L9A0E
2018-01-29 05:18:00 +00:00
L9BA5: MGTK_CALL MGTK::FramePoly, drag_outline_buffer
lda L9830
beq L9BB9
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $B, L9830
jmp L9C63
2018-01-30 16:57:36 +00:00
L9BB9: MGTK_CALL MGTK::FindWindow, findwindow_params2
2018-01-31 05:42:26 +00:00
lda findwindow_params2::window_id
cmp L9832
beq L9BE1
bit L9833
bmi L9BDC
2018-01-31 05:42:26 +00:00
lda findwindow_params2::window_id
bne L9BD4
L9BD1: jmp L9852
L9BD4: ora #$80
sta L9830
jmp L9C63
L9BDC: lda L9832
beq L9BD1
L9BE1: jsr LA365
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::InitPort, grafport
MGTK_CALL MGTK::SetPort, grafport
ldx L9016
L9BF3: dex
bmi L9C18
txa
pha
lda L9017,x
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
jsr LA18A
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, pencopy_2
jsr LA39D
pla
tax
jmp L9BF3
L9C18: jsr LA382
ldx L9016
dex
txa
pha
lda #<drag_outline_buffer
sta $08
lda #>drag_outline_buffer
2018-01-21 19:47:40 +00:00
sta $08+1
L9C29: lda L9017,x
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$02
lda ($08),y
iny
sta ($06),y
lda ($08),y
iny
sta ($06),y
lda ($08),y
iny
sta ($06),y
lda ($08),y
iny
sta ($06),y
pla
tax
dex
bmi L9C63
txa
pha
lda $08
clc
adc #$22
sta $08
bcc L9C60
2018-01-21 19:47:40 +00:00
inc $08+1
L9C60: jmp L9C29
L9C63: lda #$00
L9C65: tay
jsr LA382
tya
tax
ldy #$00
lda L9830
sta ($06),y
txa
rts
L9C74: .byte $00
L9C75: .byte $00
L9C76: .byte $00
L9C77: .byte $00
L9C78: .byte $00
L9C79: .byte $00
L9C7A: .byte $00
L9C7B: .byte $00
L9C7C: .byte $00
L9C7D: .byte $00
L9C7E: .byte $00
L9C7F: .byte $00
L9C80: .byte $0D
L9C81: .byte $00
L9C82: .byte $30
L9C83: .byte $02
L9C84: .byte $C0
L9C85: .byte $00
L9C86: .byte $00
L9C87: .byte $00
L9C88: .byte $00
L9C89: .byte $00
L9C8A: .byte $00
L9C8B: .byte $00
L9C8C: .byte $00
L9C8D: .byte $00
L9C8E: .byte $00
L9C8F: .byte $00
L9C90: .byte $00
L9C91: .byte $00
L9C92: .byte $00,$00,$00,$00
L9C96: .byte $00
L9C97: .byte $00
L9C98: .byte $00
L9C99: .byte $00,$00,$00,$00,$00
L9C9E: ldx #$07
L9CA0: lda L9C76,x
sta L9C86,x
dex
bpl L9CA0
rts
L9CAA: lda L9C76
cmp L9C7E
bne L9CBD
lda L9C77
cmp L9C7F
bne L9CBD
lda #$00
rts
L9CBD: lda #$00
sec
sbc L9C86
sta L9C96
lda #$00
sbc L9C87
sta L9C97
jmp L9CF5
L9CD1: lda L9C7A
cmp L9C82
bne L9CE4
lda L9C7B
cmp L9C83
bne L9CE4
lda #$00
rts
L9CE4: lda #$30
sec
sbc L9C8A
sta L9C96
lda #$02
sbc L9C8B
sta L9C97
L9CF5: lda L9C86
clc
adc L9C96
sta L9C76
lda L9C87
adc L9C97
sta L9C77
lda L9C8A
clc
adc L9C96
sta L9C7A
lda L9C8B
adc L9C97
sta L9C7B
lda L9C8E
clc
adc L9C96
sta L9C8E
lda L9C8F
adc L9C97
sta L9C8F
lda #$FF
rts
L9D31: lda L9C78
cmp L9C80
bne L9D44
lda L9C79
cmp L9C81
bne L9D44
lda #$00
rts
L9D44: lda #$0D
sec
sbc L9C88
sta L9C98
lda #$00
sbc L9C89
sta L9C99
jmp L9D7C
L9D58: lda L9C7C
cmp L9C84
bne L9D6B
lda L9C7D
cmp L9C85
bne L9D6B
lda #$00
rts
L9D6B: lda #$BF
sec
sbc L9C8C
sta L9C98
lda #$00
sbc L9C8D
sta L9C99
L9D7C: lda L9C88
clc
adc L9C98
sta L9C78
lda L9C89
adc L9C99
sta L9C79
lda L9C8C
clc
adc L9C98
sta L9C7C
lda L9C8D
adc L9C99
sta L9C7D
lda L9C90
clc
adc L9C98
sta L9C90
lda L9C91
adc L9C99
sta L9C91
lda #$FF
rts
L9DB8: lda L9C86
sta L9C76
lda L9C87
sta L9C77
lda L9C8A
sta L9C7A
lda L9C8B
sta L9C7B
lda #$00
sta L9C96
sta L9C97
rts
L9DD9: lda L9C88
sta L9C78
lda L9C89
sta L9C79
lda L9C8C
sta L9C7C
lda L9C8D
sta L9C7D
lda #$00
sta L9C98
sta L9C99
rts
2018-01-31 05:42:26 +00:00
L9DFA: lda findwindow_params2::mousex+1
sta L9C8F
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousex
sta L9C8E
rts
2018-01-31 05:42:26 +00:00
L9E07: lda findwindow_params2::mousey+1
sta L9C91
2018-01-31 05:42:26 +00:00
lda findwindow_params2::mousey
sta L9C90
rts
L9E14: bit L9833
bpl L9E1A
rts
L9E1A: jsr LA365
2018-01-30 16:57:36 +00:00
L9E1D: MGTK_CALL MGTK::FindWindow, findwindow_params2
2018-01-31 05:42:26 +00:00
lda findwindow_params2::which_area
bne L9E2B
2018-01-31 05:42:26 +00:00
sta findwindow_params2::window_id
2018-01-30 16:57:36 +00:00
L9E2B: DESKTOP_DIRECT_CALL $9, findwindow_params2
2018-01-31 05:42:26 +00:00
lda findwindow_params2::which_area
bne L9E39
jmp L9E97
L9E39: ldx L9016
dex
L9E3D: cmp L9017,x
beq L9E97
dex
bpl L9E3D
sta L9EB3
cmp #$01
beq L9E6A
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$02
lda ($06),y
and #$0F
sta L9831
lda ($06),y
and #$70
bne L9E97
lda L9EB3
L9E6A: sta L9830
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penXOR_2
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::FramePoly, drag_outline_buffer
2018-01-14 05:20:59 +00:00
DESKTOP_DIRECT_CALL $2, L9830
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penXOR_2
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::FramePoly, drag_outline_buffer
2018-01-30 16:57:36 +00:00
L9E97: MGTK_CALL MGTK::InitPort, grafport
MGTK_CALL MGTK::SetPort, grafport
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penXOR_2
jsr LA382
rts
L9EB3: .byte 0
L9EB4: asl a
tay
lda L8F15+1,y
tax
lda L8F15,y
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $08 IMPL
2018-01-22 07:00:34 +00:00
.proc L9EBE
jmp L9EC3
.byte 0
L9EC2: .byte 0
L9EC3: lda L9015
bne L9ECB
lda #$01
rts
L9ECB: ldx L9016
ldy #$00
lda ($06),y
jsr LA324
ldx L9016
lda #$00
sta L9016,x
dec L9016
lda L9016
bne L9EEA
lda #$00
sta L9015
L9EEA: ldy #$00
lda ($06),y
sta L9EC2
2018-01-14 05:36:18 +00:00
DESKTOP_DIRECT_CALL $3, L9EC2
lda #0
rts
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
;;; DESKTOP $0D IMPL
L9EFB:
jmp L9F07
L9EFE: .byte 0
L9EFF: .byte 0
L9F00: .byte 0
L9F01: .byte 0
L9F02: .byte 0
L9F03: .byte 0
L9F04: .byte 0
L9F05: .byte 0
L9F06: .byte 0
L9F07: ldy #$00
lda ($06),y
sta L9EFE
ldy #$08
L9F10: lda ($06),y
sta L9EFE,y
dey
bne L9F10
lda L9EFE
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
jsr LA18A
lda L8E07
cmp L9F05
lda L8E08
sbc L9F06
bpl L9F8C
lda L8E1B
cmp L9F01
lda L8E1C
sbc L9F02
bmi L9F8C
lda L8E19
cmp L9F03
lda L8E1A
sbc L9F04
bpl L9F8C
lda L8E15
cmp L9EFF
lda L8E16
sbc L9F00
bmi L9F8C
lda L8E23
cmp L9F05
lda L8E24
sbc L9F06
bmi L9F8F
lda L8E21
cmp L9F03
lda L8E22
sbc L9F04
bpl L9F8C
lda L8E0D
cmp L9EFF
lda L8E0E
sbc L9F00
bpl L9F8F
L9F8C: lda #$00
rts
L9F8F: lda #$01
rts
L9F92: .byte 0
L9F93: .byte 0
L9F94: .byte 0
.byte 0
.byte 0
.byte 0
L9F98: lda #$00
sta L9F92
beq L9FA4
L9F9F: lda #$80
sta L9F92
L9FA4: ldy #$02
lda ($06),y
and #$0F
bne L9FB4
lda L9F92
ora #$40
sta L9F92
L9FB4: ldy #$03
L9FB6: lda ($06),y
sta L8E22,y
iny
cpy #$09
bne L9FB6
jsr LA365
2018-01-30 16:57:36 +00:00
lda paintbits_params2::mapbits
sta $08
2018-01-30 16:57:36 +00:00
lda paintbits_params2::mapbits+1
2018-01-21 19:47:40 +00:00
sta $08+1
ldy #$0B
L9FCF: lda ($08),y
2018-01-30 16:57:36 +00:00
sta paintbits_params2::mapbits,y
dey
bpl L9FCF
bit L9F92
bpl L9FDF
jsr LA12C
L9FDF: jsr LA382
ldy #$09
L9FE4: lda ($06),y
2018-01-30 16:57:36 +00:00
sta paintrect_params6::bottom,y
iny
cpy #$1D
bne L9FE4
2018-01-31 05:42:26 +00:00
L9FEE: lda drawtext_params::textlen
sta textwidth_params::textlen
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::TextWidth, textwidth_params
2018-01-31 05:42:26 +00:00
lda textwidth_params::result
2018-01-31 05:22:13 +00:00
cmp paintbits_params2::maprect::x2
bcs LA010
2018-01-31 05:42:26 +00:00
inc drawtext_params::textlen
ldx drawtext_params::textlen
2018-01-24 04:11:38 +00:00
lda #' '
sta text_buffer-1,x
jmp L9FEE
LA010: lsr a
2018-01-30 16:57:36 +00:00
sta moveto_params2::xcoord+1
2018-01-31 05:22:13 +00:00
lda paintbits_params2::maprect::x2
lsr a
2018-01-30 16:57:36 +00:00
sta moveto_params2
lda moveto_params2::xcoord+1
sec
2018-01-30 16:57:36 +00:00
sbc moveto_params2::xcoord
sta moveto_params2::xcoord
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::xcoord
sec
2018-01-30 16:57:36 +00:00
sbc moveto_params2::xcoord
sta moveto_params2::xcoord
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::xcoord+1
sbc #$00
2018-01-30 16:57:36 +00:00
sta moveto_params2::xcoord+1
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::ycoord
clc
2018-01-31 05:22:13 +00:00
adc paintbits_params2::maprect::y2
2018-01-30 16:57:36 +00:00
sta moveto_params2::ycoord
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::ycoord+1
adc #$00
2018-01-30 16:57:36 +00:00
sta moveto_params2::ycoord+1
lda moveto_params2::ycoord
clc
adc #$01
2018-01-30 16:57:36 +00:00
sta moveto_params2::ycoord
lda moveto_params2::ycoord+1
adc #$00
2018-01-30 16:57:36 +00:00
sta moveto_params2::ycoord+1
lda moveto_params2::ycoord
clc
adc font_height
2018-01-30 16:57:36 +00:00
sta moveto_params2::ycoord
lda moveto_params2::ycoord+1
adc #$00
2018-01-30 16:57:36 +00:00
sta moveto_params2::ycoord+1
ldx #$03
2018-01-30 16:57:36 +00:00
LA06E: lda moveto_params2,x
sta L9F94,x
dex
bpl LA06E
bit L9F92
bvc LA097
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::InitPort, grafport
jsr LA63F
LA085: jsr LA6A3
jsr LA097
lda L9F93
bne LA085
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPortBits, grafport
rts
2018-01-29 05:18:00 +00:00
LA097: MGTK_CALL MGTK::HideCursor, DESKTOP_DIRECT ; These params should be ignored - bogus?
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, notpencopy_2
bit L9F92
bpl LA0C2
bit L9F92
bvc LA0B6
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, pencopy_2
jmp LA0C2
2018-01-30 16:57:36 +00:00
LA0B6: MGTK_CALL MGTK::PaintBits, paintbits_params
MGTK_CALL MGTK::SetPenMode, penXOR_2
LA0C2: MGTK_CALL MGTK::PaintBits, paintbits_params2
ldy #$02
lda ($06),y
and #$80
beq LA0F2
jsr LA14D
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, dark_pattern
bit L9F92
bmi LA0E6
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPenMode, penBIC_2
beq LA0EC
2018-01-30 16:57:36 +00:00
LA0E6: MGTK_CALL MGTK::SetPenMode, penOR_2
LA0EC: MGTK_CALL MGTK::PaintRect, paintrect_params6
LA0F2: ldx #$03
LA0F4: lda L9F94,x
2018-01-30 16:57:36 +00:00
sta moveto_params2,x
dex
bpl LA0F4
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::MoveTo, moveto_params2
bit L9F92
bmi LA10C
lda #$7F
bne LA10E
LA10C: lda #$00
LA10E: sta set_text_mask_params
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetTextBG, set_text_mask_params
lda text_buffer+1
and #$DF
sta text_buffer+1
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::DrawText, drawtext_params
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::ShowCursor
rts
LA12C: ldx #$0F
2018-01-30 16:57:36 +00:00
LA12E: lda paintbits_params2,x
sta paintbits_params,x
dex
bpl LA12E
2018-01-31 05:42:26 +00:00
ldy paintbits_params::maprect::y2
2018-01-30 16:57:36 +00:00
LA13A: lda paintbits_params::mapwidth
clc
2018-01-30 16:57:36 +00:00
adc paintbits_params::mapbits
sta paintbits_params::mapbits
bcc LA149
2018-01-30 16:57:36 +00:00
inc paintbits_params::mapbits+1
LA149: dey
bpl LA13A
rts
LA14D: ldx #$00
2018-01-31 05:42:26 +00:00
LA14F: lda paintbits_params2::viewloc::xcoord,x
clc
2018-01-31 05:22:13 +00:00
adc paintbits_params2::maprect::x1,x
2018-01-30 16:57:36 +00:00
sta paintrect_params6,x
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::xcoord+1,x
2018-01-31 05:22:13 +00:00
adc paintbits_params2::maprect::x1+1,x
2018-01-30 16:57:36 +00:00
sta paintrect_params6::left+1,x
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::xcoord,x
clc
2018-01-31 05:22:13 +00:00
adc paintbits_params2::maprect::x2,x
2018-01-30 16:57:36 +00:00
sta paintrect_params6::right,x
2018-01-31 05:42:26 +00:00
lda paintbits_params2::viewloc::xcoord+1,x
2018-01-31 05:22:13 +00:00
adc paintbits_params2::maprect::x2+1,x
2018-01-30 16:57:36 +00:00
sta paintrect_params6::right+1,x
inx
inx
cpx #$04
bne LA14F
2018-01-30 16:57:36 +00:00
lda paintrect_params6::bottom
sec
sbc #$01
2018-01-30 16:57:36 +00:00
sta paintrect_params6::bottom
bcs LA189
2018-01-30 16:57:36 +00:00
dec paintrect_params6::bottom+1
LA189: rts
LA18A: jsr LA365
ldy #$06
ldx #$03
LA191: lda ($06),y
sta L8E05,x
dey
dex
bpl LA191
lda L8E07
sta L8E0B
lda L8E08
sta L8E0C
lda L8E05
sta L8E21
lda L8E06
sta L8E22
ldy #$07
lda ($06),y
sta $08
iny
lda ($06),y
2018-01-21 19:47:40 +00:00
sta $08+1
ldy #$08
lda ($08),y
clc
adc L8E05
sta L8E09
sta L8E0D
iny
lda ($08),y
adc L8E06
sta L8E0A
sta L8E0E
ldy #$0A
lda ($08),y
clc
adc L8E07
sta L8E0F
iny
lda ($08),y
adc L8E08
sta L8E10
lda L8E0F
clc
adc #$02
sta L8E0F
sta L8E13
sta L8E1F
sta L8E23
lda L8E10
adc #$00
sta L8E10
sta L8E14
sta L8E20
sta L8E24
lda font_height
clc
adc L8E0F
sta L8E17
sta L8E1B
lda L8E10
adc #$00
sta L8E18
sta L8E1C
ldy #$1C
ldx #$13
LA22A: lda ($06),y
sta text_buffer-1,x
dey
dex
bpl LA22A
2018-01-31 05:42:26 +00:00
LA233: lda drawtext_params::textlen
sta textwidth_params::textlen
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::TextWidth, textwidth_params
ldy #$08
2018-01-31 05:42:26 +00:00
lda textwidth_params::result
cmp ($08),y
bcs LA256
2018-01-31 05:42:26 +00:00
inc drawtext_params::textlen
ldx drawtext_params::textlen
2018-01-24 04:11:38 +00:00
lda #' '
sta text_buffer-1,x
jmp LA233
LA256: lsr a
sta LA2A5
lda ($08),y
lsr a
sta LA2A4
lda LA2A5
sec
sbc LA2A4
sta LA2A4
lda L8E05
sec
sbc LA2A4
sta L8E1D
sta L8E19
lda L8E06
sbc #$00
sta L8E1E
sta L8E1A
2018-01-31 05:42:26 +00:00
inc textwidth_params::result
inc textwidth_params::result
lda L8E19
clc
2018-01-31 05:42:26 +00:00
adc textwidth_params::result
sta L8E11
sta L8E15
lda L8E1A
adc #$00
sta L8E12
sta L8E16
jsr LA382
rts
LA2A4: .byte 0
LA2A5: .byte 0
;;; ==================================================
DESKTOP_REDRAW_ICONS_IMPL:
jmp LA2AE
LA2A9: .byte 0
LA2AA: jsr LA382
rts
LA2AE: jsr LA365
ldx L8E95
dex
LA2B5: bmi LA2AA
txa
pha
lda L8E96,x
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$02
lda ($06),y
and #$0F
bne LA2DD
ldy #$00
lda ($06),y
sta LA2A9
2018-01-14 05:36:18 +00:00
DESKTOP_DIRECT_CALL $3, LA2A9
LA2DD: pla
tax
dex
jmp LA2B5
LA2E3: stx LA322
sta LA323
ldx #$00
LA2EB: lda L8E96,x
cmp LA323
beq LA2FA
inx
cpx L8E95
bne LA2EB
rts
LA2FA: lda L8E97,x
sta L8E96,x
inx
cpx L8E95
bne LA2FA
ldx L8E95
LA309: cpx LA322
beq LA318
lda L8E94,x
sta L8E95,x
dex
jmp LA309
LA318: ldx LA322
lda LA323
sta L8E95,x
rts
LA322: .byte 0
LA323: .byte 0
2018-01-28 16:08:39 +00:00
LA324: stx LA363
sta LA364
ldx #$00
LA32C: lda L9017,x
cmp LA364
beq LA33B
inx
cpx L9016
bne LA32C
rts
LA33B: lda L9018,x
sta L9017,x
inx
cpx L9016
bne LA33B
ldx L9016
LA34A: cpx LA363
beq LA359
lda L9015,x
sta L9016,x
dex
jmp LA34A
LA359: ldx LA363
lda LA364
sta L9016,x
rts
LA363: .byte 0
LA364: .byte 0
2018-01-28 16:08:39 +00:00
LA365: pla
sta LA380
pla
sta LA381
ldx #$00
LA36F: lda $06,x
pha
inx
cpx #$04
bne LA36F
lda LA381
pha
lda LA380
pha
rts
LA380: .byte 0
LA381: .byte 0
2018-01-28 16:08:39 +00:00
LA382: pla
sta LA39B
pla
sta LA39C
ldx #$03
LA38C: pla
sta $06,x
dex
bpl LA38C
lda LA39C
pha
lda LA39B
pha
rts
LA39B: .byte 0
LA39C: .byte 0
2018-01-28 16:08:39 +00:00
2018-01-30 16:57:36 +00:00
LA39D: MGTK_CALL MGTK::InitPort, grafport
MGTK_CALL MGTK::SetPort, grafport
jmp LA3B9
LA3AC: .byte 0
LA3AD: .byte 0
LA3AE: .byte 0
LA3AF: .byte 0
LA3B0: .byte 0
LA3B1: .byte 0
LA3B2: .byte 0
LA3B3: .byte 0
.byte 0
.byte 0
.byte 0
LA3B7: .byte 0
LA3B8: .byte 0
LA3B9: ldy #$00
lda ($06),y
sta LA3AC
iny
iny
lda ($06),y
and #$0F
sta LA3AD
beq LA3F4
lda #$80
sta LA3B7
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, white_pattern
2018-01-29 16:38:23 +00:00
MGTK_CALL MGTK::FrontWindow, LA3B8
lda LA3B8
2018-01-30 16:57:36 +00:00
sta getwinport_params
MGTK_CALL MGTK::GetWinPort, getwinport_params
jsr LA4CC
jsr LA938
jsr LA41C
jmp LA446
2018-01-30 16:57:36 +00:00
LA3F4: MGTK_CALL MGTK::InitPort, grafport
jsr LA63F
LA3FD: jsr LA6A3
jsr LA411
lda L9F93
bne LA3FD
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::SetPortBits, grafport
jmp LA446
LA411: lda #$00
sta LA3B7
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::SetPattern, checkerboard_pattern2
LA41C: lda L8E07
sta LA3B1
lda L8E08
sta LA3B2
lda L8E1D
sta LA3AF
lda L8E1E
sta LA3B0
ldx #$03
LA436: lda L8E15,x
sta LA3B3,x
dex
bpl LA436
2018-01-29 16:38:23 +00:00
MGTK_CALL MGTK::PaintPoly, L8E03
rts
LA446: jsr LA365
ldx L8E95
dex
LA44D: cpx #$FF
bne LA466
bit LA3B7
bpl LA462
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::InitPort, grafport
MGTK_CALL MGTK::SetPort, grafport4
LA462: jsr LA382
rts
LA466: txa
pha
lda L8E96,x
cmp LA3AC
beq LA4C5
asl a
tax
lda L8F15,x
sta $08
lda L8F15+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
ldy #$02
lda ($08),y
and #$07
cmp LA3AD
bne LA4C5
lda L9015
beq LA49D
ldy #$00
lda ($08),y
ldx #$00
LA492: cmp L9017,x
beq LA4C5
inx
cpx L9016
bne LA492
LA49D: ldy #$00
lda ($08),y
sta LA3AE
bit LA3B7
bpl LA4AC
jsr LA4D3
2018-01-14 05:36:18 +00:00
LA4AC: DESKTOP_DIRECT_CALL $D, LA3AE
beq LA4BA
2018-01-14 05:36:18 +00:00
DESKTOP_DIRECT_CALL $3, LA3AE
LA4BA: bit LA3B7
bpl LA4C5
lda LA3AE
jsr LA4DC
LA4C5: pla
tax
dex
jmp LA44D
LA4CB: .byte 0
LA4CC: lda #$80
sta LA4CB
bmi LA4E2
LA4D3: pha
lda #$40
sta LA4CB
jmp LA4E2
LA4DC: pha
lda #$00
sta LA4CB
LA4E2: ldy #$00
2018-01-30 16:57:36 +00:00
LA4E4: lda grafport4,y
sta LA567,y
iny
cpy #$04
bne LA4E4
ldy #$08
2018-01-30 16:57:36 +00:00
LA4F1: lda grafport4,y
sta LA567-4,y
iny
cpy #$0C
bne LA4F1
bit LA4CB
bmi LA506
bvc LA56F
jmp LA5CB
LA506: ldx #$00
LA508: lda L8E05,x
sec
sbc LA567
sta L8E05,x
lda L8E06,x
sbc LA568
sta L8E06,x
lda L8E07,x
sec
sbc LA569
sta L8E07,x
lda L8E08,x
sbc LA56A
sta L8E08,x
inx
inx
inx
inx
cpx #$20
bne LA508
ldx #$00
LA538: lda L8E05,x
clc
adc LA56B
sta L8E05,x
lda L8E06,x
adc LA56C
sta L8E06,x
lda L8E07,x
clc
adc LA56D
sta L8E07,x
lda L8E08,x
adc LA56E
sta L8E08,x
inx
inx
inx
inx
cpx #$20
bne LA538
rts
LA567: .byte 0
LA568: .byte 0
LA569: .byte 0
LA56A: .byte 0
LA56B: .byte 0
LA56C: .byte 0
LA56D: .byte 0
LA56E: .byte 0
LA56F: pla
tay
jsr LA365
tya
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$03
lda ($06),y
clc
adc LA567
sta ($06),y
iny
lda ($06),y
adc LA568
sta ($06),y
iny
lda ($06),y
clc
adc LA569
sta ($06),y
iny
lda ($06),y
adc LA56A
sta ($06),y
ldy #$03
lda ($06),y
sec
sbc LA56B
sta ($06),y
iny
lda ($06),y
sbc LA56C
sta ($06),y
iny
lda ($06),y
sec
sbc LA56D
sta ($06),y
iny
lda ($06),y
sbc LA56E
sta ($06),y
jsr LA382
rts
LA5CB: pla
tay
jsr LA365
tya
asl a
tax
lda L8F15,x
sta $06
lda L8F15+1,x
sta $07
ldy #$03
lda ($06),y
sec
sbc LA567
sta ($06),y
iny
lda ($06),y
sbc LA568
sta ($06),y
iny
lda ($06),y
sec
sbc LA569
sta ($06),y
iny
lda ($06),y
sbc LA56A
sta ($06),y
ldy #$03
lda ($06),y
clc
adc LA56B
sta ($06),y
iny
lda ($06),y
adc LA56C
sta ($06),y
iny
lda ($06),y
clc
adc LA56D
sta ($06),y
iny
lda ($06),y
adc LA56E
sta ($06),y
jsr LA382
rts
LA627: .byte $00
LA628: .byte $00
LA629: .byte $00
LA62A: .byte $00
LA62B: .byte $00
LA62C: .byte $00,$00,$00
2018-01-30 16:57:36 +00:00
.proc setportbits_params2
left: .word 0
top: .word 0
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
cliprect_x1: .word 0
cliprect_y1: .word 0
width: .word 0
height: .word 0
.endproc
LA63F: jsr LA18A
lda L8E07
sta LA629
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_y1
sta setportbits_params2::top
lda L8E08
sta LA62A
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_y1+1
sta setportbits_params2::top+1
lda L8E19
sta LA627
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_x1
sta setportbits_params2::left
lda L8E1A
sta LA628
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_x1+1
sta setportbits_params2::left+1
ldx #$03
LA674: lda L8E15,x
sta LA62B,x
2018-01-30 16:57:36 +00:00
sta setportbits_params2::width,x
dex
bpl LA674
lda LA62B
cmp #$2F
lda LA62C
sbc #$02
bmi LA69C
lda #$2E
sta LA62B
2018-01-30 16:57:36 +00:00
sta setportbits_params2::width
lda #$02
sta LA62C
2018-01-30 16:57:36 +00:00
sta setportbits_params2::width+1
LA69C: MGTK_CALL MGTK::SetPortBits, setportbits_params2
rts
LA6A3: lda #$00
jmp LA6C7
2018-01-30 16:57:36 +00:00
.proc findwindow_params
2018-01-31 05:42:26 +00:00
mousex: .word 0
mousey: .word 0
which_area:.byte 0
window_id: .byte 0
.endproc
LA6AE: .byte $00
LA6AF: .byte $00
LA6B0: .byte $00
LA6B1: .byte $00
LA6B2: .byte $00
LA6B3: .byte $00
LA6B4: .byte $00
LA6B5: .byte $00
LA6B6: .byte $00
LA6B7: .byte $00
LA6B8: .byte $00
LA6B9: .byte $00
LA6BA: .byte $00
LA6BB: .byte $00
LA6BC: .byte $00
LA6BD: .byte $00
LA6BE: .byte $00
LA6BF: .byte $00
LA6C0: .byte $00
LA6C1: .byte $00
LA6C2: .byte $00
LA6C3: .byte $00
LA6C4: .byte $00
LA6C5: .byte $00
LA6C6: .byte $00
LA6C7: lda L9F93
beq LA6FA
2018-01-30 16:57:36 +00:00
lda setportbits_params2::width
clc
adc #$01
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_x1
sta setportbits_params2::left
lda setportbits_params2::width+1
adc #$00
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_x1+1
sta setportbits_params2::left+1
ldx #$05
LA6E5: lda LA629,x
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_y1,x
dex
bpl LA6E5
2018-01-30 16:57:36 +00:00
lda setportbits_params2::cliprect_y1
sta setportbits_params2::top
lda setportbits_params2::cliprect_y1+1
sta setportbits_params2::top+1
LA6FA: lda setportbits_params2::cliprect_x1
sta LA6B3
sta LA6BF
2018-01-30 16:57:36 +00:00
lda setportbits_params2::cliprect_x1+1
sta LA6B4
sta LA6C0
2018-01-30 16:57:36 +00:00
lda setportbits_params2::cliprect_y1
sta LA6B5
sta LA6B9
2018-01-30 16:57:36 +00:00
lda setportbits_params2::cliprect_y1+1
sta LA6B6
sta LA6BA
2018-01-30 16:57:36 +00:00
lda setportbits_params2::width
sta LA6B7
sta LA6BB
2018-01-30 16:57:36 +00:00
lda setportbits_params2::width+1
sta LA6B8
sta LA6BC
2018-01-30 16:57:36 +00:00
lda setportbits_params2::height
sta LA6BD
sta LA6C1
2018-01-30 16:57:36 +00:00
lda setportbits_params2::height+1
sta LA6BE
sta LA6C2
lda #$00
sta LA6B0
LA747: lda LA6B0
cmp #$04
bne LA775
lda #$00
sta LA6B0
2018-01-30 16:57:36 +00:00
LA753: MGTK_CALL MGTK::SetPortBits, setportbits_params2
lda setportbits_params2::width+1
cmp LA62C
bne LA76F
2018-01-30 16:57:36 +00:00
lda setportbits_params2::width
cmp LA62B
bcc LA76F
lda #$00
sta L9F93
rts
LA76F: lda #$01
sta L9F93
rts
LA775: lda LA6B0
asl a
asl a
tax
ldy #$00
LA77D: lda LA6B3,x
2018-01-30 16:57:36 +00:00
sta findwindow_params,y
iny
inx
cpy #$04
bne LA77D
inc LA6B0
2018-01-30 16:57:36 +00:00
MGTK_CALL MGTK::FindWindow, findwindow_params
2018-01-31 05:42:26 +00:00
lda findwindow_params::which_area
beq LA747
2018-01-31 05:42:26 +00:00
lda findwindow_params::window_id
2018-01-30 16:57:36 +00:00
sta getwinport_params
MGTK_CALL MGTK::GetWinPort, getwinport_params
jsr LA365
2018-01-31 05:42:26 +00:00
MGTK_CALL MGTK::GetWinPtr, findwindow_params::window_id
lda LA6AE
sta $06
lda LA6AF
sta $07
ldy #$01
lda ($06),y
and #$01
bne LA7C3
sta LA6B2
beq LA7C8
LA7C3: lda #$80
sta LA6B2
LA7C8: ldy #$04
lda ($06),y
and #$80
sta LA6B1
iny
lda ($06),y
and #$80
lsr a
ora LA6B1
sta LA6B1
2018-01-30 16:57:36 +00:00
lda grafport4::left
sec
sbc #2
2018-01-30 16:57:36 +00:00
sta grafport4::left
lda grafport4::left+1
sbc #0
2018-01-30 16:57:36 +00:00
sta grafport4::left+1
lda grafport4::cliprect_x1
sec
sbc #2
2018-01-30 16:57:36 +00:00
sta grafport4::cliprect_x1
lda grafport4::cliprect_x1+1
sbc #0
2018-01-30 16:57:36 +00:00
sta grafport4::cliprect_x1+1
bit LA6B2
bmi LA820
2018-01-30 16:57:36 +00:00
lda grafport4::top
sec
sbc #$0E
2018-01-30 16:57:36 +00:00
sta grafport4::top
bcs LA812
2018-01-30 16:57:36 +00:00
dec grafport4::top+1
LA812: lda grafport4::cliprect_y1
sec
sbc #$0E
2018-01-30 16:57:36 +00:00
sta grafport4::cliprect_y1
bcs LA820
2018-01-30 16:57:36 +00:00
dec grafport4::cliprect_y1+1
LA820: bit LA6B1
bpl LA833
2018-01-30 16:57:36 +00:00
lda grafport4::height
clc
2018-01-24 23:39:12 +00:00
adc #12
2018-01-30 16:57:36 +00:00
sta grafport4::height
bcc LA833
2018-01-30 16:57:36 +00:00
inc grafport4::height+1
LA833: bit LA6B1
bvc LA846
2018-01-30 16:57:36 +00:00
lda grafport4::width
clc
2018-01-24 23:39:12 +00:00
adc #20
2018-01-30 16:57:36 +00:00
sta grafport4::width
bcc LA846
2018-01-30 16:57:36 +00:00
inc grafport4::width+1
LA846: jsr LA382
2018-01-30 16:57:36 +00:00
lda grafport4::width
sec
2018-01-30 16:57:36 +00:00
sbc grafport4::cliprect_x1
sta LA6C3
2018-01-30 16:57:36 +00:00
lda grafport4::width+1
sbc grafport4::cliprect_x1+1
sta LA6C4
2018-01-30 16:57:36 +00:00
lda grafport4::height
sec
2018-01-30 16:57:36 +00:00
sbc grafport4::cliprect_y1
sta LA6C5
2018-01-30 16:57:36 +00:00
lda grafport4::height+1
sbc grafport4::cliprect_y1+1
sta LA6C6
lda LA6C3
clc
2018-01-30 16:57:36 +00:00
adc grafport4::left
sta LA6C3
2018-01-30 16:57:36 +00:00
lda grafport4::left+1
adc LA6C4
sta LA6C4
lda LA6C5
clc
2018-01-30 16:57:36 +00:00
adc grafport4::top
sta LA6C5
lda LA6C6
2018-01-30 16:57:36 +00:00
adc grafport4::top+1
sta LA6C6
2018-01-30 16:57:36 +00:00
lda setportbits_params2::width
cmp LA6C3
2018-01-30 16:57:36 +00:00
lda setportbits_params2::width+1
sbc LA6C4
bmi LA8B7
lda LA6C3
clc
2018-01-24 23:39:12 +00:00
adc #1
2018-01-30 16:57:36 +00:00
sta setportbits_params2::width
lda LA6C4
2018-01-24 23:39:12 +00:00
adc #0
2018-01-30 16:57:36 +00:00
sta setportbits_params2::width+1
jmp LA8D4
2018-01-30 16:57:36 +00:00
LA8B7: lda grafport4::left
cmp setportbits_params2::cliprect_x1
lda grafport4::left+1
sbc setportbits_params2::cliprect_x1+1
bmi LA8D4
2018-01-30 16:57:36 +00:00
lda grafport4::left
sta setportbits_params2::width
lda grafport4::left+1
sta setportbits_params2::width+1
jmp LA6FA
2018-01-30 16:57:36 +00:00
LA8D4: lda grafport4::top
cmp setportbits_params2::cliprect_y1
lda grafport4::top+1
sbc setportbits_params2::cliprect_y1+1
bmi LA8F6
2018-01-30 16:57:36 +00:00
lda grafport4::top
sta setportbits_params2::height
lda grafport4::top+1
sta setportbits_params2::height+1
2018-01-24 23:39:12 +00:00
lda #1
sta L9F93
jmp LA6FA
LA8F6: lda LA6C5
2018-01-30 16:57:36 +00:00
cmp setportbits_params2::height
lda LA6C6
2018-01-30 16:57:36 +00:00
sbc setportbits_params2::height+1
bpl LA923
lda LA6C5
clc
2018-01-24 23:39:12 +00:00
adc #2
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_y1
sta setportbits_params2::top
lda LA6C6
2018-01-24 23:39:12 +00:00
adc #0
2018-01-30 16:57:36 +00:00
sta setportbits_params2::cliprect_y1+1
sta setportbits_params2::top+1
2018-01-24 23:39:12 +00:00
lda #1
sta L9F93
jmp LA6FA
2018-01-30 16:57:36 +00:00
LA923: lda setportbits_params2::width
sta setportbits_params2::cliprect_x1
sta setportbits_params2::left
lda setportbits_params2::width+1
sta setportbits_params2::cliprect_x1+1
sta setportbits_params2::left+1
jmp LA753
2018-01-30 16:57:36 +00:00
LA938: lda grafport4::top
clc
2018-01-24 23:39:12 +00:00
adc #15
2018-01-30 16:57:36 +00:00
sta grafport4::top
lda grafport4::top+1
adc #0
2018-01-30 16:57:36 +00:00
sta grafport4::top+1
lda grafport4::cliprect_y1
clc
2018-01-24 23:39:12 +00:00
adc #15
2018-01-30 16:57:36 +00:00
sta grafport4::cliprect_y1
lda grafport4::cliprect_y1+1
adc #0
2018-01-30 16:57:36 +00:00
sta grafport4::cliprect_y1+1
MGTK_CALL MGTK::SetPort, grafport4
rts
.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
.byte $00,$00,$00,$00,$00,$00,$00
;; 5.25" Floppy Disk
floppy140_icon:
2018-01-31 05:42:26 +00:00
.addr floppy140_pixels; mapbits
.byte 4 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 0, 1, 26, 15 ; maprect
2018-01-07 19:45:52 +00:00
floppy140_pixels:
.byte px(%1010101),px(%0101010),px(%1010101),px(%0101010)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
.byte px(%1100000),px(%0000011),px(%1000000),px(%0000110)
.byte px(%1100000),px(%0000011),px(%1000000),px(%0000111)
.byte px(%1100000),px(%0000011),px(%1000000),px(%0000110)
.byte px(%1100000),px(%0000011),px(%1000000),px(%0000111)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000110)
.byte px(%1100000),px(%0000011),px(%1000000),px(%0000111)
.byte px(%1100000),px(%0000111),px(%1100000),px(%0000110)
.byte px(%1100000),px(%0000011),px(%1000000),px(%0000111)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000110)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000111)
.byte px(%1011000),px(%0000000),px(%0000000),px(%0000110)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000111)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000110)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
;; RAM Disk
2018-01-13 04:58:02 +00:00
ramdisk_icon:
2018-01-31 05:42:26 +00:00
.addr ramdisk_pixels ; mapbits
.byte 6 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 1, 0, 38, 11 ; maprect
2018-01-07 19:45:52 +00:00
ramdisk_pixels:
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111101)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0001110)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0001101)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0001110)
.byte px(%1100000),px(%0001111),px(%1000111),px(%1100110),px(%0000110),px(%0001101)
.byte px(%1100000),px(%0001100),px(%1100110),px(%0110111),px(%1011110),px(%0001110)
.byte px(%1100000),px(%0001111),px(%1000111),px(%1110110),px(%1110110),px(%0001101)
.byte px(%1100000),px(%0001100),px(%1100110),px(%0110110),px(%0000110),px(%0001110)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0001101)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1001100),px(%1100110),px(%0001110)
.byte px(%0101010),px(%1010101),px(%0101010),px(%1001100),px(%1100110),px(%0001101)
.byte px(%1010101),px(%0101010),px(%1010101),px(%1111111),px(%1111111),px(%1111110)
;; 3.5" Floppy Disk
floppy800_icon:
2018-01-31 05:42:26 +00:00
.addr floppy800_pixels; mapbits
.byte 3 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 0, 0, 20, 11 ; maprect
2018-01-07 19:45:52 +00:00
floppy800_pixels:
.byte px(%1111111),px(%1111111),px(%1111110)
.byte px(%1100011),px(%0000000),px(%1100111)
.byte px(%1100011),px(%0000000),px(%1100111)
.byte px(%1100011),px(%1111111),px(%1100011)
.byte px(%1100000),px(%0000000),px(%0000011)
.byte px(%1100000),px(%0000000),px(%0000011)
.byte px(%1100111),px(%1111111),px(%1110011)
.byte px(%1100110),px(%0000000),px(%0110011)
.byte px(%1100110),px(%0000000),px(%0110011)
.byte px(%1100110),px(%0000000),px(%0110011)
.byte px(%1100110),px(%0000000),px(%0110011)
.byte px(%1111111),px(%1111111),px(%1111111)
;; Hard Disk
2018-01-13 04:58:02 +00:00
profile_icon:
2018-01-31 05:42:26 +00:00
.addr profile_pixels ; mapbits
.byte 8 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 1, 0, 51, 9 ; maprect
2018-01-07 19:45:52 +00:00
profile_pixels:
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1110101)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011010)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011101)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011010)
.byte px(%1100011),px(%1000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011101)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011101)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011010)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0011101)
.byte px(%0111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1110101)
.byte px(%1010111),px(%0101010),px(%1010101),px(%0101010),px(%1010101),px(%0101010),px(%1010111),px(%0101010)
;; Trash Can
2018-01-13 04:58:02 +00:00
trash_icon:
2018-01-31 05:42:26 +00:00
.addr trash_pixels ; mapbits
.byte 5 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 7, 1, 27, 18 ; maprect
2018-01-13 04:58:02 +00:00
trash_pixels:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%1010101),PX(%1111111),px(%1010101),px(%0000000)
.byte px(%0000000),px(%0101010),PX(%1100011),px(%0101010),px(%0000000)
.byte px(%0000000),PX(%1111111),PX(%1111111),PX(%1111111),px(%0000000)
.byte px(%0000000),px(%1100000),px(%0000000),PX(%0000011),px(%0000000)
.byte px(%0000000),PX(%1111111),PX(%1111111),PX(%1111111),px(%0000000)
.byte px(%0000000),px(%1100000),px(%0000000),px(%0000011),px(%0000000)
.byte px(%0000000),px(%1100001),px(%0000100),px(%0010011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100010),px(%0001000),px(%0100011),px(%0000000)
.byte px(%0000000),px(%1100001),px(%0000100),px(%0010011),px(%0000000)
.byte px(%0000000),px(%1100000),px(%0000000),px(%0000011),px(%0000000)
.byte px(%0000000),PX(%1111111),PX(%1111111),PX(%1111111),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
label_apple:
PASCAL_STRING GLYPH_CAPPLE
label_file:
PASCAL_STRING "File"
label_view:
PASCAL_STRING "View"
label_special:
PASCAL_STRING "Special"
label_startup:
PASCAL_STRING "Startup"
label_selector:
PASCAL_STRING "Selector"
label_new_folder:
PASCAL_STRING "New Folder ..."
label_open:
PASCAL_STRING "Open"
label_close:
PASCAL_STRING "Close"
label_close_all:
PASCAL_STRING "Close All"
label_select_all:
PASCAL_STRING "Select All"
label_copy_file:
PASCAL_STRING "Copy a File ..."
label_delete_file:
PASCAL_STRING "Delete a File ..."
label_eject:
PASCAL_STRING "Eject"
label_quit:
PASCAL_STRING "Quit"
label_by_icon:
PASCAL_STRING "By Icon"
label_by_name:
PASCAL_STRING "By Name"
label_by_date:
PASCAL_STRING "By Date"
label_by_size:
PASCAL_STRING "By Size"
label_by_type:
PASCAL_STRING "By Type"
label_check_drives:
PASCAL_STRING "Check Drives"
label_format_disk:
PASCAL_STRING "Format a Disk ..."
label_erase_disk:
PASCAL_STRING "Erase a Disk ..."
label_disk_copy:
PASCAL_STRING "Disk Copy ..."
label_lock:
PASCAL_STRING "Lock ..."
label_unlock:
PASCAL_STRING "Unlock ..."
label_get_info:
PASCAL_STRING "Get Info ..."
label_get_size:
PASCAL_STRING "Get Size ..."
label_rename_icon:
PASCAL_STRING "Rename an Icon ..."
2018-01-13 05:24:07 +00:00
desktop_menu:
2018-01-30 07:34:12 +00:00
DEFINE_MENU_BAR 6
DEFINE_MENU_BAR_ITEM 1, label_apple, apple_menu
DEFINE_MENU_BAR_ITEM 2, label_file, file_menu
DEFINE_MENU_BAR_ITEM 4, label_view, view_menu
DEFINE_MENU_BAR_ITEM 5, label_special, special_menu
DEFINE_MENU_BAR_ITEM 8, label_startup, startup_menu
DEFINE_MENU_BAR_ITEM 3, label_selector, selector_menu
2018-01-13 05:24:07 +00:00
file_menu:
DEFINE_MENU 12
DEFINE_MENU_ITEM label_new_folder, 'F', 'f'
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_open, 'O', 'o'
DEFINE_MENU_ITEM label_close, 'C', 'c'
DEFINE_MENU_ITEM label_close_all, 'B', 'b'
DEFINE_MENU_ITEM label_select_all, 'A', 'a'
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_copy_file, 'Y', 'y'
DEFINE_MENU_ITEM label_delete_file, 'D', 'd'
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_eject, 'E', 'e'
DEFINE_MENU_ITEM label_quit, 'Q', 'q'
view_menu:
DEFINE_MENU 5
DEFINE_MENU_ITEM label_by_icon, 'J', 'j'
DEFINE_MENU_ITEM label_by_name, 'N', 'n'
DEFINE_MENU_ITEM label_by_date, 'T', 't'
DEFINE_MENU_ITEM label_by_size, 'K', 'k'
DEFINE_MENU_ITEM label_by_type, 'L', 'l'
special_menu:
DEFINE_MENU 13
DEFINE_MENU_ITEM label_check_drives
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_format_disk, 'S', 's'
DEFINE_MENU_ITEM label_erase_disk, 'Z', 'z'
DEFINE_MENU_ITEM label_disk_copy
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_lock
DEFINE_MENU_ITEM label_unlock
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_get_info, 'I', 'i'
DEFINE_MENU_ITEM label_get_size
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM label_rename_icon
.addr $0000,$0000
2018-01-21 03:33:15 +00:00
.assert * = $AD58, error, "Segment length mismatch"
PAD_TO $AE00
2018-01-21 18:44:26 +00:00
;;; ==================================================
2018-01-13 03:23:08 +00:00
;; Rects
2018-01-21 23:37:55 +00:00
confirm_dialog_outer_rect: DEFINE_RECT 4,2,396,98
confirm_dialog_inner_rect: DEFINE_RECT 5,3,395,97
2018-01-21 22:35:37 +00:00
cancel_button_rect: DEFINE_RECT 40,81,140,92
LAE18: DEFINE_RECT 193,30,293,41
2018-01-21 22:35:37 +00:00
ok_button_rect: DEFINE_RECT 260,81,360,92
yes_button_rect: DEFINE_RECT 200,81,240,92
no_button_rect: DEFINE_RECT 260,81,300,92
all_button_rect: DEFINE_RECT 320,81,360,92
2018-01-11 05:36:09 +00:00
str_ok_label:
PASCAL_STRING {"OK ",GLYPH_RETURN}
2018-01-21 23:37:55 +00:00
ok_label_pos: DEFINE_POINT 265,91
cancel_label_pos: DEFINE_POINT 45,91
yes_label_pos: DEFINE_POINT 205,91
no_label_pos: DEFINE_POINT 265,91
all_label_pos: DEFINE_POINT 325,91
2018-01-14 17:18:22 +00:00
.byte $1C,$00,$70,$00
.byte $1C,$00,$87,$00
LAE6C: .byte $00 ; text mask
LAE6D: .byte $7F ; text mask
2018-01-22 07:00:34 +00:00
press_ok_to_rect: DEFINE_RECT 39,25,360,80
2018-01-21 23:37:55 +00:00
prompt_rect: DEFINE_RECT 40,60,360,80
LAE7E: DEFINE_POINT 65,43
LAE82: DEFINE_POINT 65,51
LAE86: DEFINE_RECT 65,35,394,42
LAE8E: DEFINE_RECT 65,43,394,50
2018-01-11 05:36:09 +00:00
str_cancel_label:
PASCAL_STRING "Cancel Esc"
str_yes_label:
PASCAL_STRING " Yes"
str_no_label:
PASCAL_STRING " No"
str_all_label:
PASCAL_STRING " All"
2018-01-21 23:37:55 +00:00
LAEB6: PASCAL_STRING "Source filename:"
LAEC7: PASCAL_STRING "Destination filename:"
2018-01-21 23:37:55 +00:00
;; "About" dialog resources
about_dialog_outer_rect: DEFINE_RECT 4, 2, 396, 108
about_dialog_inner_rect: DEFINE_RECT 5, 3, 395, 107
2018-01-11 07:04:47 +00:00
str_about1: PASCAL_STRING "Apple II DeskTop"
str_about2: PASCAL_STRING "Copyright Apple Computer Inc., 1986"
str_about3: PASCAL_STRING "Copyright Version Soft, 1985 - 1986"
str_about4: PASCAL_STRING "All Rights Reserved"
str_about5: PASCAL_STRING "Authors: Stephane Cavril, Bernard Gallet, Henri Lamiraux"
str_about6: PASCAL_STRING "Richard Danais and Luc Barthelet"
str_about7: PASCAL_STRING "With thanks to: A. Gerard, J. Gerber, P. Pahl, J. Bernard"
str_about8: PASCAL_STRING "November 26, 1986"
str_about9: PASCAL_STRING "Version 1.1"
2018-01-11 07:21:36 +00:00
;; "Copy File" dialog strings
str_copy_title:
PASCAL_STRING "Copy ..."
str_copy_copying:
PASCAL_STRING "Now Copying "
str_copy_from:
PASCAL_STRING "from:"
str_copy_to:
PASCAL_STRING "to :"
str_copy_remaining:
PASCAL_STRING "Files remaining to copy: "
2018-01-11 07:04:47 +00:00
str_exists_prompt:
PASCAL_STRING "That file already exists. Do you want to write over it ?"
str_large_prompt:
PASCAL_STRING "This file is too large to copy, click OK to continue."
LB0B6: DEFINE_POINT 110, 35
LB0BA: DEFINE_POINT 170, 59
2018-01-11 07:21:36 +00:00
;; "Delete" dialog strings
str_delete_title:
2018-01-11 07:04:47 +00:00
PASCAL_STRING "Delete ..."
2018-01-11 07:21:36 +00:00
str_delete_ok:
2018-01-11 07:04:47 +00:00
PASCAL_STRING "Click OK to delete:"
str_ok_empty:
PASCAL_STRING "Clicking OK will immediately empty the trash of:"
2018-01-15 01:06:27 +00:00
str_file_colon:
2018-01-11 07:04:47 +00:00
PASCAL_STRING "File:"
2018-01-11 07:21:36 +00:00
str_delete_remaining:
2018-01-11 07:04:47 +00:00
PASCAL_STRING "Files remaining to be deleted:"
str_delete_locked_file:
PASCAL_STRING "This file is locked, do you want to delete it anyway ?"
LB16A: DEFINE_POINT 145, 59
LB16E: DEFINE_POINT 200, 59
LB172: DEFINE_POINT 300, 59
2018-01-11 07:04:47 +00:00
;; "New Folder" dialog strings
str_new_folder_title:
PASCAL_STRING "New Folder ..."
str_in_colon:
PASCAL_STRING "in:"
str_enter_folder_name:
PASCAL_STRING "Enter the folder name:"
;; "Rename Icon" dialog strings
str_rename_title:
PASCAL_STRING "Rename an Icon ..."
str_rename_old:
PASCAL_STRING "Rename: "
str_rename_new:
PASCAL_STRING "New name:"
;; "Get Info" dialog strings
str_info_title:
PASCAL_STRING "Get Info ..."
str_info_name:
PASCAL_STRING "Name"
str_info_locked:
PASCAL_STRING "Locked"
str_info_size:
PASCAL_STRING "Size"
str_info_create:
PASCAL_STRING "Creation date"
str_info_mod:
PASCAL_STRING "Last modification"
str_info_type:
PASCAL_STRING "Type"
str_info_protected:
PASCAL_STRING "Write protected"
str_info_blocks:
PASCAL_STRING "Blocks free/size"
2018-01-12 06:38:03 +00:00
str_colon:
PASCAL_STRING ": "
LB22D: DEFINE_POINT 160,59
LB231: DEFINE_POINT 145,59
LB235: DEFINE_POINT 200,59
LB239: DEFINE_POINT 185,59
LB23D: DEFINE_POINT 205,59
LB241: DEFINE_POINT 195,59
LB245: PASCAL_STRING "Format a Disk ..."
LB257: PASCAL_STRING "Select the location where the disk is to be formatted"
LB28D: PASCAL_STRING "Enter the name of the new volume:"
LB2AF: PASCAL_STRING "Do you want to format "
LB2C6: PASCAL_STRING "Formatting the disk...."
LB2DE: PASCAL_STRING "Formatting error. Check drive, then click OK to try again."
2018-01-11 07:13:02 +00:00
LB319: PASCAL_STRING "Erase a Disk ..."
LB32A: PASCAL_STRING "Select the location where the disk is to be erased"
LB35D: PASCAL_STRING "Do you want to erase "
LB373: PASCAL_STRING "Erasing the disk...."
LB388: PASCAL_STRING "Erasing error. Check drive, then click OK to try again."
2018-01-11 07:13:02 +00:00
;; "Unlock File" dialog strings
str_unlock_title:
PASCAL_STRING "Unlock ..."
str_unlock_ok:
PASCAL_STRING "Click OK to unlock "
str_unlock_remaining:
PASCAL_STRING "Files remaining to be unlocked: "
;; "Lock File" dialog strings
str_lock_title:
PASCAL_STRING "Lock ..."
str_lock_ok:
PASCAL_STRING "Click OK to lock "
str_lock_remaining:
PASCAL_STRING "Files remaining to be locked: "
;; "Get Size" dialog strings
str_size_title:
PASCAL_STRING "Get Size ..."
str_size_number:
PASCAL_STRING "Number of files"
str_size_blocks:
PASCAL_STRING "Blocks used on disk"
.byte $6E,$00,$23,$00,$6E,$00,$2B,$00
2018-01-11 07:13:02 +00:00
str_download:
PASCAL_STRING "DownLoad ..."
2018-01-14 17:18:22 +00:00
str_ramcard_full:
PASCAL_STRING "The RAMCard is full. The copy was not completed."
2018-01-12 06:38:03 +00:00
str_1_space:
PASCAL_STRING " "
2018-01-11 07:13:02 +00:00
str_warning:
PASCAL_STRING "Warning !"
2018-01-12 06:38:03 +00:00
str_insert_system_disk:
PASCAL_STRING "Please insert the system disk."
str_selector_list_full:
PASCAL_STRING "The Selector list is full. You must delete an entry"
str_before_new_entries:
PASCAL_STRING "before you can add new entries."
str_window_must_be_closed:
PASCAL_STRING "A window must be closed before opening this new catalog."
str_too_many_windows:
PASCAL_STRING "There are too many windows open on the desktop !"
str_save_selector_list:
PASCAL_STRING "Do you want to save the new Selector list"
str_on_system_disk:
PASCAL_STRING "on the system disk ?"
2018-01-21 23:49:54 +00:00
.assert * = $B5D9, error, "Segment length mismatch"
PAD_TO $B600
2018-01-21 00:44:49 +00:00
;;; ==================================================
show_alert_indirection:
jmp show_alert_dialog
alert_bitmap:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),PX(%1111111),PX(%1111111),px(%0000000),px(%0000000)
.byte px(%0111100),px(%1111100),px(%0000001),px(%1110000),PX(%0000111),px(%0000000),px(%0000000)
.byte px(%0111100),px(%1111100),px(%0000011),px(%1100000),px(%0000011),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0000111),PX(%1100111),px(%1111001),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0001111),PX(%1100111),px(%1111001),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),px(%1111001),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),px(%1110011),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),PX(%1100111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),PX(%1001111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),PX(%0011111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),px(%1111110),PX(%0111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),px(%1111100),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),px(%1111100),PX(%1111111),px(%0000000),px(%0000000)
.byte px(%0111110),px(%0000000),PX(%0111111),PX(%1111111),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100000),PX(%1111111),px(%1111100),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100001),PX(%1111111),PX(%1111111),PX(%1111111),px(%0000000),px(%0000000)
.byte px(%0111000),px(%0000011),PX(%1111111),PX(%1111111),px(%1111110),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.proc alert_bitmap_params
2018-01-31 05:42:26 +00:00
DEFINE_POINT 20, 8 ; viewloc
.addr alert_bitmap ; mapbits
.byte 7 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 0, 0, $24, $17 ; maprect
.endproc
alert_rect:
DEFINE_RECT 65, 87, 485, 142
alert_inner_frame_rect1:
DEFINE_RECT 4, 2, 416, 53
alert_inner_frame_rect2:
DEFINE_RECT 5, 3, 415, 52
2018-01-21 23:49:54 +00:00
LB6D3: .word $41
LB6D5: .word $57
.byte $00,$20,$80,$00,$00,$00,$00
.byte $00
2018-01-21 23:49:54 +00:00
LB6DF: .word $1A4
LB6E1: .word $37
2018-01-21 00:44:49 +00:00
;;; ==================================================
;;; Show Alert Dialog
;;; Call show_alert_dialog with prompt number in X (???), A = ???
.proc show_alert_dialog_impl
ok_label:
PASCAL_STRING {"OK ",GLYPH_RETURN}
try_again_rect:
DEFINE_RECT 20,37,120,48
try_again_pos:
DEFINE_POINT 25,47
cancel_rect:
DEFINE_RECT 300,37,400,48
2018-01-21 00:44:49 +00:00
cancel_pos:
DEFINE_POINT 305,47
2018-01-21 00:44:49 +00:00
.word $BE,$10 ; ???
LB70F: DEFINE_POINT 75,29
alert_action: .byte $00
LB714: .byte $00
LB715: .byte $00
try_again_label:
PASCAL_STRING "Try Again A"
cancel_label:
PASCAL_STRING "Cancel Esc"
err_00: PASCAL_STRING "System Error"
err_27: PASCAL_STRING "I/O error"
err_28: PASCAL_STRING "No device connected"
err_2B: PASCAL_STRING "The disk is write protected."
err_40: PASCAL_STRING "The syntax of the pathname is invalid."
err_44: PASCAL_STRING "Part of the pathname doesn't exist."
err_45: PASCAL_STRING "The volume cannot be found."
err_46: PASCAL_STRING "The file cannot be found."
err_47: PASCAL_STRING "That name already exists. Please use another name."
err_48: PASCAL_STRING "The disk is full."
err_49: PASCAL_STRING "The volume directory cannot hold more than 51 files."
err_4E: PASCAL_STRING "The file is locked."
err_52: PASCAL_STRING "This is not a ProDOS disk."
err_57: PASCAL_STRING "There is another volume with that name on the desktop."
2018-01-21 00:44:49 +00:00
;; Below are internal (not ProDOS MLI) error codes.
err_F9: PASCAL_STRING "There are 2 volumes with the same name."
err_FA: PASCAL_STRING "This file cannot be run."
err_FB: PASCAL_STRING "That name is too long."
err_FC: PASCAL_STRING "Please insert source disk"
err_FD: PASCAL_STRING "Please insert destination disk"
err_FE: PASCAL_STRING "BASIC.SYSTEM not found"
;; number of alert messages
alert_count:
.byte 20
;; message number-to-index table
;; (look up by scan to determine index)
alert_table:
2018-01-21 22:35:37 +00:00
;; ProDOS MLI error codes:
.byte $00,$27,$28,$2B,$40,$44,$45,$46
2018-01-21 22:35:37 +00:00
.byte $47,$48,$49,$4E,$52,$57
;; Internal error codes:
.byte $F9,$FA,$FB,$FC,$FD,$FE
;; alert index to string address
prompt_table:
.addr err_00,err_27,err_28,err_2B,err_40,err_44,err_45,err_46
.addr err_47,err_48,err_49,err_4E,err_52,err_57,err_F9,err_FA
.addr err_FB,err_FC,err_FD,err_FE
;; alert index to action (0 = Cancel, $80 = Try Again)
alert_action_table:
.byte $00,$00,$00,$80,$00,$80,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$80,$80,$00
2018-01-21 00:44:49 +00:00
;; Actual entry point
start: pha
txa
pha
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::HideCursor
MGTK_RELAY2_CALL MGTK::SetCursor, pointer_cursor
MGTK_RELAY2_CALL MGTK::ShowCursor
2018-01-24 23:39:12 +00:00
;; play bell
sta ALTZPOFF
sta ROMIN2
2018-01-11 05:10:24 +00:00
jsr BELL1
sta ALTZPON
lda LCBANK1
lda LCBANK1
2018-01-24 23:39:12 +00:00
ldx #$03
lda #$00
2018-01-30 16:57:36 +00:00
LBA0B: sta grafport3_left,x
sta grafport3_cliprect_x1,x
dex
bpl LBA0B
2018-01-24 04:11:38 +00:00
lda #<$226
2018-01-30 16:57:36 +00:00
sta grafport3_width
2018-01-24 04:11:38 +00:00
lda #>$226
2018-01-30 16:57:36 +00:00
sta grafport3_width+1
2018-01-24 04:11:38 +00:00
lda #<$B9
2018-01-30 16:57:36 +00:00
sta grafport3_height
2018-01-24 04:11:38 +00:00
lda #>$B9
2018-01-30 16:57:36 +00:00
sta grafport3_height+1
MGTK_RELAY2_CALL MGTK::SetPort, grafport3
lda LB6D3
2018-01-21 23:49:54 +00:00
ldx LB6D3+1
jsr LBF8B
sty LBFCA
sta LBFCD
lda LB6D3
clc
adc LB6DF
pha
2018-01-21 23:49:54 +00:00
lda LB6D3+1
adc LB6DF+1
tax
pla
jsr LBF8B
sty LBFCC
sta LBFCE
lda LB6D5
sta LBFC9
clc
adc LB6E1
sta LBFCB
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::HideCursor
jsr LBE08
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::ShowCursor
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, alert_rect ; alert background
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR ; ensures corners are inverted
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::FrameRect, alert_rect ; alert outline
2018-01-29 08:57:55 +00:00
MGTK_RELAY2_CALL MGTK::SetPortBits, LB6D3
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::FrameRect, alert_inner_frame_rect1 ; inner 2x border
MGTK_RELAY2_CALL MGTK::FrameRect, alert_inner_frame_rect2
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::HideCursor
MGTK_RELAY2_CALL MGTK::PaintBits, alert_bitmap_params
MGTK_RELAY2_CALL MGTK::ShowCursor
pla
tax
pla
ldy alert_count
dey
LBAE5: cmp alert_table,y
beq LBAEF
dey
bpl LBAE5
ldy #$00
LBAEF: tya
asl a
tay
lda prompt_table,y
sta LB714
lda prompt_table+1,y
sta LB715
cpx #$00
beq LBB0B
txa
and #$FE
sta alert_action
jmp LBB14
.macro DRAW_PASCAL_STRING addr
lda #<(addr)
ldx #>(addr)
jsr draw_pascal_string
.endmacro
LBB0B: tya
lsr a
tay
lda alert_action_table,y
sta alert_action
2018-01-30 16:57:36 +00:00
LBB14: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
bit alert_action
bpl LBB5C
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::FrameRect, cancel_rect
MGTK_RELAY2_CALL MGTK::MoveTo, cancel_pos
DRAW_PASCAL_STRING cancel_label
bit alert_action
bvs LBB5C
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::FrameRect, try_again_rect
MGTK_RELAY2_CALL MGTK::MoveTo, try_again_pos
DRAW_PASCAL_STRING try_again_label
jmp LBB75
2018-01-29 05:18:00 +00:00
LBB5C: MGTK_RELAY2_CALL MGTK::FrameRect, try_again_rect
MGTK_RELAY2_CALL MGTK::MoveTo, try_again_pos
DRAW_PASCAL_STRING ok_label
2018-01-29 05:18:00 +00:00
LBB75: MGTK_RELAY2_CALL MGTK::MoveTo, LB70F
lda LB714
ldx LB715
jsr draw_pascal_string
2018-01-30 16:57:36 +00:00
LBB87: MGTK_RELAY2_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
bne LBB9A
jmp LBC0C
2018-01-29 05:18:00 +00:00
LBB9A: cmp #MGTK::key_down
bne LBB87
2018-01-30 16:57:36 +00:00
lda event_params_key
and #$7F
bit alert_action
bpl LBBEE
2018-01-12 07:03:53 +00:00
cmp #KEY_ESCAPE
bne LBBC3
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, cancel_rect
lda #$01
jmp LBC55
LBBC3: bit alert_action
bvs LBBEE
2018-01-12 07:03:53 +00:00
cmp #'a'
bne LBBE3
2018-01-30 16:57:36 +00:00
LBBCC: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, try_again_rect
lda #$00
jmp LBC55
2018-01-12 07:03:53 +00:00
LBBE3: cmp #'A'
beq LBBCC
cmp #$0D
beq LBBCC
jmp LBB87
2018-01-12 07:03:53 +00:00
LBBEE: cmp #KEY_RETURN
bne LBC09
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, try_again_rect
lda #$02
jmp LBC55
LBC09: jmp LBB87
LBC0C: jsr LBDE1
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::MoveTo, event_params_coords
bit alert_action
bpl LBC42
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::InRect, cancel_rect
cmp #$80
bne LBC2D
jmp LBCE9
LBC2D: bit alert_action
bvs LBC42
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::InRect, try_again_rect
cmp #$80
bne LBC52
jmp LBC6D
2018-01-29 05:18:00 +00:00
LBC42: MGTK_RELAY2_CALL MGTK::InRect, try_again_rect
cmp #$80
bne LBC52
jmp LBD65
LBC52: jmp LBB87
LBC55: pha
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::HideCursor
jsr LBE5D
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::ShowCursor
pla
rts
2018-01-30 16:57:36 +00:00
LBC6D: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, try_again_rect
lda #$00
sta LBCE8
2018-01-30 16:57:36 +00:00
LBC84: MGTK_RELAY2_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_up
beq LBCDB
jsr LBDE1
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::MoveTo, event_params_coords
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::InRect, try_again_rect
cmp #$80
beq LBCB5
lda LBCE8
beq LBCBD
jmp LBC84
LBCB5: lda LBCE8
bne LBCBD
jmp LBC84
2018-01-30 16:57:36 +00:00
LBCBD: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, try_again_rect
lda LBCE8
clc
adc #$80
sta LBCE8
jmp LBC84
LBCDB: lda LBCE8
beq LBCE3
jmp LBB87
LBCE3: lda #$00
jmp LBC55
LBCE8: .byte 0
2018-01-30 16:57:36 +00:00
LBCE9: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, cancel_rect
lda #$00
sta LBD64
2018-01-30 16:57:36 +00:00
LBD00: MGTK_RELAY2_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_up
beq LBD57
jsr LBDE1
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::MoveTo, event_params_coords
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::InRect, cancel_rect
cmp #$80
beq LBD31
lda LBD64
beq LBD39
jmp LBD00
LBD31: lda LBD64
bne LBD39
jmp LBD00
2018-01-30 16:57:36 +00:00
LBD39: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, cancel_rect
lda LBD64
clc
adc #$80
sta LBD64
jmp LBD00
LBD57: lda LBD64
beq LBD5F
jmp LBB87
LBD5F: lda #$01
jmp LBC55
LBD64: .byte 0
LBD65: lda #$00
sta LBDE0
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, try_again_rect
2018-01-30 16:57:36 +00:00
LBD7C: MGTK_RELAY2_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_up
beq LBDD3
jsr LBDE1
2018-01-30 16:57:36 +00:00
MGTK_RELAY2_CALL MGTK::MoveTo, event_params_coords
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::InRect, try_again_rect
cmp #$80
beq LBDAD
lda LBDE0
beq LBDB5
jmp LBD7C
LBDAD: lda LBDE0
bne LBDB5
jmp LBD7C
2018-01-30 16:57:36 +00:00
LBDB5: MGTK_RELAY2_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY2_CALL MGTK::PaintRect, try_again_rect
lda LBDE0
clc
adc #$80
sta LBDE0
jmp LBD7C
LBDD3: lda LBDE0
beq LBDDB
jmp LBB87
LBDDB: lda #$02
jmp LBC55
2018-01-21 00:44:49 +00:00
.endproc
show_alert_dialog := show_alert_dialog_impl::start
;;; ==================================================
LBDE0: .byte 0
2018-01-30 16:57:36 +00:00
LBDE1: lda event_params_xcoord
sec
sbc LB6D3
2018-01-30 16:57:36 +00:00
sta event_params_xcoord
lda event_params_xcoord+1
2018-01-21 23:49:54 +00:00
sbc LB6D3+1
2018-01-30 16:57:36 +00:00
sta event_params_xcoord+1
lda event_params_ycoord
sec
sbc LB6D5
2018-01-30 16:57:36 +00:00
sta event_params_ycoord
lda event_params_ycoord+1
2018-01-21 23:49:54 +00:00
sbc LB6D5+1
2018-01-30 16:57:36 +00:00
sta event_params_ycoord+1
rts
LBE08: lda #$00
sta LBE37
lda #$08
sta LBE38
lda LBFC9
jsr LBF10
lda LBFCB
sec
sbc LBFC9
tax
inx
LBE21: lda LBFCA
sta LBE5C
LBE27: lda LBE5C
lsr a
tay
sta PAGE2OFF ; main $2000-$3FFF
bcs LBE34
sta PAGE2ON ; aux $2000-$3FFF
LBE34: lda ($06),y
LBE37 := * + 1
LBE38 := * + 2
2018-01-17 03:36:54 +00:00
sta dummy1234
inc LBE37
bne LBE41
inc LBE38
LBE41: lda LBE5C
cmp LBFCC
bcs LBE4E
inc LBE5C
bne LBE27
LBE4E: jsr LBF52
dex
bne LBE21
lda LBE37
ldx LBE38
rts
.byte 0
LBE5C: .byte 0
LBE5D: lda #$00
sta LBEBC
lda #$08
2018-01-21 22:35:37 +00:00
sta LBEBC+1
ldx LBFCD
ldy LBFCE
lda #$FF
cpx #$00
beq LBE78
LBE73: clc
rol a
dex
bne LBE73
LBE78: sta LBF0C
eor #$FF
sta LBF0D
lda #$01
cpy #$00
beq LBE8B
LBE86: sec
rol a
dey
bne LBE86
LBE8B: sta LBF0E
eor #$FF
sta LBF0F
lda LBFC9
jsr LBF10
lda LBFCB
sec
sbc LBFC9
tax
inx
lda LBFCA
sta LBF0B
LBEA8: lda LBFCA
sta LBF0B
LBEAE: lda LBF0B
lsr a
tay
sta PAGE2OFF ; main $2000-$3FFF
2018-01-21 22:35:37 +00:00
bcs :+
sta PAGE2ON ; aux $2000-$3FFF
2018-01-21 22:35:37 +00:00
LBEBC := *+1
: lda $0800 ; self-modified
pha
lda LBF0B
cmp LBFCA
beq LBEDD
cmp LBFCC
bne LBEEB
lda ($06),y
and LBF0F
sta ($06),y
pla
and LBF0E
ora ($06),y
pha
jmp LBEEB
LBEDD: lda ($06),y
and LBF0D
sta ($06),y
pla
and LBF0C
ora ($06),y
pha
LBEEB: pla
sta ($06),y
inc LBEBC
bne LBEF6
2018-01-21 22:35:37 +00:00
inc LBEBC+1
LBEF6: lda LBF0B
cmp LBFCC
bcs LBF03
inc LBF0B
bne LBEAE
LBF03: jsr LBF52
dex
bne LBEA8
rts
.byte $00
LBF0B: .byte $00
LBF0C: .byte $00
LBF0D: .byte $00
LBF0E: .byte $00
LBF0F: .byte $00
LBF10: sta LBFCF
and #$07
sta LBFB0
lda LBFCF
and #$38
sta LBFAF
lda LBFCF
and #$C0
sta LBFAE
jsr LBF2C
rts
LBF2C: lda LBFAE
lsr a
lsr a
ora LBFAE
pha
lda LBFAF
lsr a
lsr a
lsr a
lsr a
sta LBF51
pla
ror a
sta $06
lda LBFB0
asl a
asl a
ora LBF51
ora #$20
sta $07
clc
rts
LBF51: .byte 0
LBF52: lda LBFB0
cmp #$07
beq LBF5F
inc LBFB0
jmp LBF2C
LBF5F: lda #$00
sta LBFB0
lda LBFAF
cmp #$38
beq LBF74
clc
adc #$08
sta LBFAF
jmp LBF2C
LBF74: lda #$00
sta LBFAF
lda LBFAE
clc
adc #$40
sta LBFAE
cmp #$C0
beq LBF89
jmp LBF2C
LBF89: sec
rts
LBF8B: ldy #$00
cpx #$02
bne LBF96
ldy #$49
clc
adc #$01
LBF96: cpx #$01
bne LBFA4
ldy #$24
clc
adc #$04
bcc LBFA4
iny
sbc #$07
LBFA4: cmp #$07
bcc LBFAD
sbc #$07
iny
bne LBFA4
LBFAD: rts
LBFAE: .byte $00
LBFAF: .byte $00
LBFB0: .byte $00,$FF,$00,$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
LBFC9: .byte $00
LBFCA: .byte $00
LBFCB: .byte $00
LBFCC: .byte $00
LBFCD: .byte $00
LBFCE: .byte $00
LBFCF: .byte $00
;; Draw pascal string; address in (X,A)
.proc draw_pascal_string
ptr := $06
sta ptr
stx ptr+1
ldy #$00
lda (ptr),y ; Check length
beq end
sta ptr+2
inc ptr
bne call
inc ptr+1
2018-01-29 05:18:00 +00:00
call: MGTK_RELAY2_CALL MGTK::DrawText, ptr
end: rts
.endproc
2018-01-29 05:18:00 +00:00
;; MGTK call in Y, params addr (X,A)
.proc MGTK_RELAY2
sty call
sta addr
stx addr+1
2018-01-29 05:18:00 +00:00
jsr MGTK::MLI
call: .byte 0
addr: .addr 0
rts
.endproc
2018-01-21 03:33:15 +00:00
.assert * = $BFFC, error, "Segment length mismatch"
PAD_TO $C000
.endproc ; desktop_aux
;;; ==================================================
;;;
;;; $C000 - $CFFF is I/O Space
;;;
;;; ==================================================
.org $D000
;;; Various routines callable from MAIN
2018-01-05 05:05:54 +00:00
;;; ==================================================
2018-01-29 05:18:00 +00:00
;;; MGTK call from main>aux, call in Y, params at (X,A)
.proc MGTK_RELAY
.assert * = $D000, error, "Entry point mismatch"
sty addr-1
sta addr
stx addr+1
sta RAMRDON
sta RAMWRTON
2018-01-29 05:18:00 +00:00
MGTK_CALL 0, 0, addr
sta RAMRDOFF
sta RAMWRTOFF
rts
.endproc
2018-01-05 05:05:54 +00:00
;;; ==================================================
;;; SET_POS with params at (X,A) followed by DRAW_TEXT call
.proc SETPOS_RELAY
sta addr
stx addr+1
sta RAMRDON
sta RAMWRTON
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::MoveTo, 0, addr
MGTK_RELAY_CALL MGTK::DrawText, text_buffer2
tay
sta RAMRDOFF
sta RAMWRTOFF
tya
rts
.endproc
2018-01-05 05:05:54 +00:00
.macro SETPOS_RELAY_CALL addr
lda #<addr
ldx #>addr
jsr SETPOS_RELAY
.endmacro
;;; ==================================================
;;; DESKTOP call from main>aux, call in Y params at (X,A)
.proc DESKTOP_RELAY
sty addr-1
sta addr
stx addr+1
sta RAMRDON
sta RAMWRTON
DESKTOP_CALL 0, 0, addr
tay
sta RAMRDOFF
sta RAMWRTOFF
tya
rts
.endproc
2018-01-05 05:05:54 +00:00
.macro DESKTOP_RELAY_CALL call, addr
ldy #(call)
.if .paramcount > 1
lda #<(addr)
ldx #>(addr)
.else
lda #0
ldx #0
.endif
jsr DESKTOP_RELAY
.endmacro
;;; ==================================================
;;; Find first 0 in AUX $1F80 ... $1F7F; if present,
;;; mark it 1 and return index+1 in A
.proc DESKTOP_FIND_SPACE
sta RAMRDON
sta RAMWRTON
ldx #0
loop: lda $1F80,x
beq :+
inx
cpx #$7F
bne loop
rts
: inx
txa
dex
tay
lda #1
sta $1F80,x
sta RAMRDOFF
sta RAMWRTOFF
tya
rts
.endproc
2018-01-05 05:05:54 +00:00
;;; ==================================================
;;; Zero the AUX $1F80 table entry in A
.proc DESKTOP_FREE_SPACE
tay
sta RAMRDON
sta RAMWRTON
dey
lda #0
sta $1F80,y
sta RAMRDOFF
sta RAMWRTOFF
rts
.endproc
2018-01-05 05:05:54 +00:00
;;; ==================================================
;;; Copy data to/from buffers (see bufnum / buf3 / table1/2) ???
.proc DESKTOP_COPY_BUF_IMPL
ptr := $6
2018-01-05 05:05:54 +00:00
from:
lda #$80
bne :+ ; always
2018-01-05 05:05:54 +00:00
to:
lda #$00
: sta flag
2018-01-11 06:31:02 +00:00
jsr desktop_main_push_zp_addrs
lda bufnum
asl a ; * 2
tax
lda table1,x ; copy table1 entry to ptr
sta ptr
lda table1+1,x
sta ptr+1
sta RAMRDON
sta RAMWRTON
bit flag
bpl set_length
;; assign length from buf3
lda buf3len
ldy #0
sta (ptr),y
jmp set_copy_ptr
;; assign length to buf3
set_length:
ldy #0
lda (ptr),y
sta buf3len
set_copy_ptr:
lda table2,x ; copy table2 entry to ptr
sta ptr
lda table2+1,x
sta ptr+1
bit flag
bmi copy_from
;; copy into buf3
ldy #0 ; flag clear...
: cpy buf3len
beq done
lda (ptr),y
sta buf3,y
iny
jmp :-
;; copy from buf3
copy_from:
ldy #0
: cpy buf3len
beq done
lda buf3,y
sta (ptr),y
iny
jmp :-
done: sta RAMRDOFF
sta RAMWRTOFF
2018-01-11 06:31:02 +00:00
jsr desktop_main_pop_zp_addrs
rts
flag: .byte 0
rts ; ???
.endproc
2018-01-05 05:05:54 +00:00
DESKTOP_COPY_FROM_BUF := DESKTOP_COPY_BUF_IMPL::from
DESKTOP_COPY_TO_BUF := DESKTOP_COPY_BUF_IMPL::to
2018-01-05 05:05:54 +00:00
;;; ==================================================
2018-01-28 16:08:39 +00:00
;;; Assign active state to desktop_active_winid window
2018-01-05 05:05:54 +00:00
.proc DESKTOP_ASSIGN_STATE
src := $6
dst := $8
sta RAMRDON
sta RAMWRTON
2018-01-29 05:18:00 +00:00
MGTK_CALL MGTK::GetPort, src ; grab window state
2018-01-28 16:08:39 +00:00
lda desktop_active_winid ; which desktop window?
asl a
tax
lda win_table,x ; window table
sta dst
lda win_table+1,x
sta dst+1
lda dst
clc
adc #20 ; add offset
sta dst
bcc :+
inc dst+1
: ldy #35 ; copy 35 bytes into window state
loop: lda (src),y
sta (dst),y
dey
bpl loop
sta RAMRDOFF
sta RAMWRTOFF
rts
.endproc
2018-01-05 05:05:54 +00:00
;;; ==================================================
;;; From MAIN, load AUX (X,A) into A
.proc DESKTOP_AUXLOAD
stx op+2
sta op+1
sta RAMRDON
sta RAMWRTON
2018-01-17 03:36:54 +00:00
op: lda dummy1234
sta RAMRDOFF
sta RAMWRTOFF
rts
.endproc
2018-01-05 05:05:54 +00:00
;;; ==================================================
;;; From MAIN, show alert
;;; ...with prompt #0
.proc DESKTOP_SHOW_ALERT0
ldx #$00
;; fall through
.endproc
2018-01-05 05:05:54 +00:00
;;; ... with prompt # in X
.proc DESKTOP_SHOW_ALERT
sta RAMRDON
sta RAMWRTON
jsr desktop_aux::show_alert_indirection
sta RAMRDOFF
sta RAMWRTOFF
rts
.endproc
;;; ============================================================
2018-01-21 03:33:15 +00:00
.assert * = $D166, error, "Segment length mismatch"
PAD_TO $D200
2018-01-30 16:57:36 +00:00
pencopy: .byte 0
penOR: .byte 1
penXOR: .byte 2
penBIC: .byte 3
notpencopy: .byte 4
notpenOR: .byte 5
notpenXOR: .byte 6
notpenBIC: .byte 7
.proc event_params
kind: .byte 0
2018-01-12 07:03:53 +00:00
key := *
modifiers := *+1
coords := *
xcoord: .word 0
ycoord: .word 0
.endproc
2018-01-30 16:57:36 +00:00
event_params_kind := event_params::kind
event_params_key := event_params::key
event_params_modifiers := event_params::modifiers
event_params_coords := event_params::coords
event_params_xcoord := event_params::xcoord
event_params_ycoord := event_params::ycoord
2018-01-30 16:57:36 +00:00
;; When event_params_coords is used for FindControl/FindWindow
2018-01-12 07:15:04 +00:00
query_client_params_part:
2018-01-31 05:42:26 +00:00
findwindow_params_which_area:
2018-01-12 07:15:04 +00:00
.byte 0
query_client_params_scroll:
2018-01-31 05:42:26 +00:00
findwindow_params_window_id:
2018-01-12 07:15:04 +00:00
.byte 0
2018-01-16 04:33:32 +00:00
LD20F: .byte 0
LD210: .byte 0
LD211: .byte 0
2018-01-30 16:57:36 +00:00
.proc getwinport_params2
2018-01-31 05:42:26 +00:00
window_id: .byte 0
a_grafport: .addr grafport2
2018-01-16 04:57:02 +00:00
.endproc
2018-01-30 16:57:36 +00:00
.proc grafport2
2018-01-16 04:57:02 +00:00
left: .word 0
top: .word 0
2018-01-30 07:58:53 +00:00
mapbits: .addr 0
mapwidth: .word 0
cliprect_x1: .word 0
cliprect_y1: .word 0
2018-01-16 04:57:02 +00:00
width: .word 0
height: .word 0
2018-01-31 03:04:33 +00:00
penpattern:.res 8, 0
2018-01-30 07:58:53 +00:00
colormasks: .byte 0, 0
penloc: DEFINE_POINT 0, 0
penwidth: .byte 0
penheight: .byte 0
2018-01-16 04:57:02 +00:00
unk: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte 0
fontptr: .addr 0
2018-01-16 04:33:32 +00:00
.endproc
2018-01-05 05:05:54 +00:00
2018-01-30 16:57:36 +00:00
.proc grafport3
2018-01-16 05:10:43 +00:00
left: .word 0
top: .word 0
2018-01-30 07:58:53 +00:00
mapbits: .addr 0
mapwidth: .word 0
cliprect_x1: .word 0
cliprect_y1: .word 0
2018-01-16 05:10:43 +00:00
width: .word 0
height: .word 0
2018-01-31 03:04:33 +00:00
penpattern:.res 8, 0
2018-01-30 07:58:53 +00:00
colormasks: .byte 0, 0
penloc: DEFINE_POINT 0, 0
penwidth: .byte 0
penheight: .byte 0
2018-01-16 05:10:43 +00:00
unk: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte 0
fontptr: .addr 0
2018-01-16 05:10:43 +00:00
.endproc
2018-01-30 16:57:36 +00:00
grafport3_left := grafport3::left
grafport3_cliprect_x1 := grafport3::cliprect_x1
grafport3_width := grafport3::width
grafport3_height := grafport3::height
2018-01-30 16:57:36 +00:00
.proc grafport5
2018-01-16 05:10:43 +00:00
left: .word 0
top: .word 0
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
cliprect_x1: .word 0
cliprect_y1: .word 0
width: .word 10
height: .word 10
2018-01-31 03:04:33 +00:00
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte 0
fontptr: .addr DEFAULT_FONT
2018-01-16 05:10:43 +00:00
.endproc
2018-01-21 22:35:37 +00:00
white_pattern3: ; unused?
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte %11111111
.byte $FF
black_pattern3: ; unused?
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte %00000000
.byte $FF
2018-01-11 05:10:24 +00:00
checkerboard_pattern3:
.byte px(%1010101)
.byte PX(%0101010)
.byte px(%1010101)
.byte PX(%0101010)
.byte px(%1010101)
.byte PX(%0101010)
.byte px(%1010101)
.byte PX(%0101010)
2018-01-06 05:03:10 +00:00
.byte $FF
;; Copies of ROM bytes used for machine identification
2018-01-13 03:06:55 +00:00
id_byte_1: .byte $06 ; ROM FBB3 ($06 = IIe or later)
id_byte_2: .byte $EA ; ROM FBC0 ($EA = IIe, $E0 = IIe enh/IIgs, $00 = IIc/IIc+)
2018-01-06 05:03:10 +00:00
.byte $00,$00,$00,$00,$88,$00,$08,$00
2018-01-28 16:08:39 +00:00
.byte $13
zp_use_flag0:
.byte 0
2018-01-30 16:57:36 +00:00
.proc trackgoaway_params ; next 3 bytes???
goaway:.byte 0
2018-01-28 16:08:39 +00:00
.endproc
LD2A9: .byte 0
double_click_flag:
.byte 0 ; high bit clear if double-clicked, set otherwise
2018-01-06 05:03:10 +00:00
2018-01-21 22:35:37 +00:00
;; Set to specific machine type; used for double-click timing.
2018-01-11 05:10:24 +00:00
machine_type:
.byte $00 ; Set to: $96 = IIe, $FA = IIc, $FD = IIgs
2018-01-06 05:03:10 +00:00
2018-01-23 16:33:12 +00:00
warning_dialog_num:
.byte $00
;;; Cursors (bitmap - 2x12 bytes, mask - 2x12 bytes, hotspot - 2 bytes)
;;; Pointer
pointer_cursor:
.byte px(%0000000),px(%0000000)
.byte px(%0100000),px(%0000000)
.byte px(%0110000),px(%0000000)
.byte px(%0111000),px(%0000000)
.byte px(%0111100),px(%0000000)
.byte px(%0111110),px(%0000000)
.byte px(%0111111),px(%0000000)
.byte px(%0101100),px(%0000000)
.byte px(%0000110),px(%0000000)
.byte px(%0000110),px(%0000000)
.byte px(%0000011),px(%0000000)
.byte px(%0000000),px(%0000000)
.byte px(%1100000),px(%0000000)
.byte px(%1110000),px(%0000000)
.byte px(%1111000),px(%0000000)
.byte px(%1111100),px(%0000000)
.byte px(%1111110),px(%0000000)
.byte px(%1111111),px(%0000000)
.byte px(%1111111),px(%1000000)
.byte px(%1111111),px(%0000000)
.byte px(%0001111),px(%0000000)
.byte px(%0001111),px(%0000000)
.byte px(%0000111),px(%1000000)
.byte px(%0000111),px(%1000000)
.byte 1,1
;;; Insertion Point
2018-01-11 05:10:24 +00:00
insertion_point_cursor:
.byte px(%0000000),px(%0000000)
.byte px(%0110001),px(%1000000)
.byte px(%0001010),px(%0000000)
.byte px(%0000100),px(%0000000)
.byte px(%0000100),px(%0000000)
.byte px(%0000100),px(%0000000)
.byte px(%0000100),px(%0000000)
.byte px(%0000100),px(%0000000)
.byte px(%0001010),px(%0000000)
.byte px(%0110001),px(%1000000)
.byte px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000)
.byte px(%0110001),px(%1000000)
.byte px(%1111011),px(%1100000)
.byte px(%0111111),px(%1000000)
.byte px(%0001110),px(%0000000)
.byte px(%0001110),px(%0000000)
.byte px(%0001110),px(%0000000)
.byte px(%0001110),px(%0000000)
.byte px(%0001110),px(%0000000)
.byte px(%0111111),px(%1000000)
.byte px(%1111011),px(%1100000)
.byte px(%0110001),px(%1000000)
.byte px(%0000000),px(%0000000)
.byte 4, 5
;;; Watch
2018-01-11 05:10:24 +00:00
watch_cursor:
.byte px(%0000000),px(%0000000)
.byte px(%0011111),px(%1100000)
.byte px(%0011111),px(%1100000)
.byte px(%0100000),px(%0010000)
.byte px(%0100001),px(%0010000)
.byte px(%0100110),px(%0011000)
.byte px(%0100000),px(%0010000)
.byte px(%0100000),px(%0010000)
.byte px(%0011111),px(%1100000)
.byte px(%0011111),px(%1100000)
.byte px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000)
.byte px(%0011111),px(%1100000)
.byte px(%0111111),px(%1110000)
.byte px(%0111111),px(%1110000)
.byte px(%1111111),px(%1111000)
.byte px(%1111111),px(%1111000)
.byte px(%1111111),px(%1111100)
.byte px(%1111111),px(%1111000)
.byte px(%1111111),px(%1111000)
.byte px(%0111111),px(%1110000)
.byte px(%0111111),px(%1110000)
.byte px(%0011111),px(%1100000)
.byte px(%0000000),px(%0000000)
.byte 5, 5
2018-01-24 05:52:53 +00:00
LD343: .res 191, 0
2018-01-24 05:37:41 +00:00
2018-01-24 05:52:53 +00:00
path_buf0: .res 65, 0
2018-01-24 05:37:41 +00:00
path_buf1: .res 65, 0
path_buf2: .res 65, 0
alert_bitmap2:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),px(%0000000),PX(%1111111),PX(%1111111),px(%0000000),px(%0000000)
.byte px(%0111100),px(%1111100),px(%0000001),px(%1110000),PX(%0000111),px(%0000000),px(%0000000)
.byte px(%0111100),px(%1111100),px(%0000011),px(%1100000),px(%0000011),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0000111),PX(%1100111),px(%1111001),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0001111),PX(%1100111),px(%1111001),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),px(%1111001),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),px(%1110011),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),PX(%1100111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),PX(%1001111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),PX(%1111111),PX(%0011111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),px(%1111110),PX(%0111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),px(%1111100),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1111100),PX(%0011111),px(%1111100),PX(%1111111),px(%0000000),px(%0000000)
.byte px(%0111110),px(%0000000),PX(%0111111),PX(%1111111),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100000),PX(%1111111),px(%1111100),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100001),PX(%1111111),PX(%1111111),PX(%1111111),px(%0000000),px(%0000000)
.byte px(%0111000),px(%0000011),PX(%1111111),PX(%1111111),px(%1111110),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0111111),px(%1100000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
2018-01-11 05:10:24 +00:00
alert_bitmap2_params:
2018-01-31 05:22:13 +00:00
DEFINE_POINT 40, 8 ; viewloc
.addr alert_bitmap2 ; mapbits
.byte 7 ; mapwidth
.byte 0 ; reserved
DEFINE_RECT 0, 0, $24, $17 ; maprect
;; Looks like window param blocks starting here
2018-01-31 03:04:33 +00:00
.proc winfoF
2018-01-30 07:58:53 +00:00
window_id: .byte $0F
options: .byte MGTK::option_dialog_box
title: .addr 0
2018-01-29 05:18:00 +00:00
hscroll:.byte MGTK::scroll_option_none
vscroll:.byte MGTK::scroll_option_none
2018-01-30 07:58:53 +00:00
hthumbmax: .byte 0
hthumbpos: .byte 0
vthumbmax: .byte 0
vthumbpos: .byte 0
status: .byte 0
reserved:.byte 0
mincontwidth: .word $96
maxcontwidth: .word $32
mincontlength: .word $1F4
maxcontlength: .word $8C
2018-01-31 03:04:33 +00:00
port:
viewloc: DEFINE_POINT $4B, $23
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, $190, $64
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte MGTK::textbg_white
fontptr: .addr DEFAULT_FONT
nextwinfo: .addr 0
.endproc
2018-01-31 03:04:33 +00:00
.proc winfo12
2018-01-30 07:58:53 +00:00
window_id: .byte $12
options: .byte MGTK::option_dialog_box
title: .addr 0
2018-01-29 05:18:00 +00:00
hscroll:.byte MGTK::scroll_option_none
vscroll:.byte MGTK::scroll_option_none
2018-01-30 07:58:53 +00:00
hthumbmax: .byte 0
hthumbpos: .byte 0
vthumbmax: .byte 0
vthumbpos: .byte 0
status: .byte 0
reserved:.byte 0
mincontwidth: .word $96
maxcontwidth: .word $32
mincontlength: .word $1F4
maxcontlength: .word $8C
2018-01-31 03:04:33 +00:00
port:
viewloc: DEFINE_POINT $19, $14
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, $1F4, $99
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte MGTK::textbg_white
fontptr: .addr DEFAULT_FONT
nextwinfo: .addr 0
.endproc
2018-01-31 03:04:33 +00:00
.proc winfo15
2018-01-30 07:58:53 +00:00
window_id: .byte $15
options: .byte MGTK::option_dialog_box
title: .addr 0
2018-01-29 05:18:00 +00:00
hscroll:.byte MGTK::scroll_option_none
vscroll:.byte MGTK::scroll_option_normal
2018-01-30 07:58:53 +00:00
hthumbmax: .byte 0
hthumbpos: .byte 0
vthumbmax: .byte 3
vthumbpos: .byte 0
status: .byte 0
reserved:.byte 0
mincontwidth: .word $64
maxcontwidth: .word $46
mincontlength: .word $64
maxcontlength: .word $46
2018-01-31 03:04:33 +00:00
port:
viewloc: DEFINE_POINT $35, $32
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, $7D, $46
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte MGTK::textbg_white
fontptr: .addr DEFAULT_FONT
nextwinfo: .addr 0
.endproc
2018-01-31 03:04:33 +00:00
.proc winfo18
2018-01-30 07:58:53 +00:00
window_id: .byte $18
options: .byte MGTK::option_dialog_box
title: .addr 0
2018-01-29 05:18:00 +00:00
hscroll:.byte MGTK::scroll_option_none
vscroll:.byte MGTK::scroll_option_none
2018-01-30 07:58:53 +00:00
hthumbmax: .byte 0
hthumbpos: .byte 0
vthumbmax: .byte 0
vthumbpos: .byte 0
status: .byte 0
reserved:.byte 0
mincontwidth: .word $96
maxcontwidth: .word $32
mincontlength: .word $1F4
maxcontlength: .word $8C
2018-01-31 03:04:33 +00:00
port:
viewloc: DEFINE_POINT $50, $28
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, $190, $6E
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte MGTK::textbg_white
fontptr: .addr DEFAULT_FONT
nextwinfo: .addr 0
.endproc
2018-01-31 03:04:33 +00:00
winfo18_port := winfo18::port
2018-01-31 03:04:33 +00:00
.proc winfo1B
2018-01-30 07:58:53 +00:00
window_id: .byte $1B
options: .byte MGTK::option_dialog_box
title: .addr 0
2018-01-29 05:18:00 +00:00
hscroll:.byte MGTK::scroll_option_none
vscroll:.byte MGTK::scroll_option_none
2018-01-30 07:58:53 +00:00
hthumbmax: .byte 0
hthumbpos: .byte 0
vthumbmax: .byte 0
vthumbpos: .byte 0
status: .byte 0
reserved:.byte 0
mincontwidth: .word $96
maxcontwidth: .word $32
mincontlength: .word $1F4
maxcontlength: .word $8C
2018-01-31 03:04:33 +00:00
port:
viewloc: DEFINE_POINT $69, $19
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, $15E, $6E
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte MGTK::textbg_white
fontptr: .addr DEFAULT_FONT
nextwinfo: .addr 0
.endproc
;; Coordinates for labels?
2018-01-15 05:16:36 +00:00
.byte $28,$00,$25,$00,$68,$01,$2F,$00,$2D,$00,$2E,$00
LD6AB: DEFINE_RECT 40,61,360,71
LD6B3: DEFINE_POINT 45,70
2018-01-15 05:16:36 +00:00
LD6B7: DEFINE_POINT 0, 18
LD6BB: DEFINE_POINT 40,18
2018-01-15 05:16:36 +00:00
.byte $28,$00,$23,$00
2018-01-21 18:56:50 +00:00
dialog_label_pos:
DEFINE_POINT 40,0
2018-01-15 05:16:36 +00:00
2018-01-31 05:22:13 +00:00
.proc setportbits_params3
DEFINE_POINT 75, 35
2018-01-29 05:18:00 +00:00
.addr MGTK::screen_mapbits
2018-01-31 05:22:13 +00:00
.byte MGTK::screen_mapwidth
.byte 0
DEFINE_RECT 0, 0, $166, $64
.endproc
2018-01-21 22:35:37 +00:00
;; ???
2018-01-15 05:16:36 +00:00
.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,$28,$00,$5C,$00,$8C,$00,$67,$00,$D7,$00,$66,$00,$2D,$00,$66,$00,$82,$00,$07,$00,$DC,$00,$13,$00
LD718: PASCAL_STRING "Add an Entry ..."
LD729: PASCAL_STRING "Edit an Entry ..."
LD73B: PASCAL_STRING "Delete an Entry ..."
LD74F: PASCAL_STRING "Run an Entry ..."
LD760: PASCAL_STRING "Run list"
PASCAL_STRING "Enter the full pathname of the run list file:"
PASCAL_STRING "Enter the name (14 characters max) you wish to appear in the run list"
PASCAL_STRING "Add a new entry to the:"
PASCAL_STRING {GLYPH_OAPPLE,"1 Run list"}
PASCAL_STRING {GLYPH_OAPPLE,"2 Other Run list"}
PASCAL_STRING "Down load:"
PASCAL_STRING {GLYPH_OAPPLE,"3 at first boot"}
PASCAL_STRING {GLYPH_OAPPLE,"4 at first use"}
PASCAL_STRING {GLYPH_OAPPLE,"5 never"}
PASCAL_STRING "Enter the full pathname of the run list file:"
.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
PASCAL_STRING "the DOS 3.3 disk in slot drive ?"
.byte $1A,$22
PASCAL_STRING "the disk in slot drive ?"
.byte $12
2018-01-16 04:33:32 +00:00
.byte $1A
buf_filename:
.res 16, 0
2018-01-15 18:08:50 +00:00
LD8E7: .byte 0
LD8E8: .byte 0
LD8E9: .byte $14
.byte $00
LD8EB: .byte 0
LD8EC: .byte 0
LD8ED: .byte 0
LD8EE: .byte 1
LD8EF: .byte 6
LD8F0: .byte 0
LD8F1: .byte 0
LD8F2: .byte 0
LD8F3: .byte 0
LD8F4: .byte 0
LD8F5: .byte 0
str_1_char:
2018-01-11 05:36:09 +00:00
PASCAL_STRING {0}
str_2_spaces:
PASCAL_STRING " "
2018-01-11 05:36:09 +00:00
str_files:
PASCAL_STRING "Files"
2018-01-11 05:36:09 +00:00
str_7_spaces:
PASCAL_STRING " "
2018-01-15 05:23:48 +00:00
LD909: .byte $00
LD90A: .byte $00
.byte $00,$00,$0D
.byte $00,$00,$00,$00,$00,$7D,$00,$00
.byte $00,$02,$00,$00,$00,$00,$00,$02
.byte $01,$02,$00,$00,$57,$01,$28,$00
.byte $6B,$01,$30,$00,$6B,$01,$38,$00
.byte $57,$01,$4B,$00,$6B,$01,$53,$00
.byte $6B,$01,$5B,$00,$6B,$01,$63,$00
.byte $5A,$01,$29,$00,$64,$01,$2F,$00
.byte $5A,$01,$31,$00,$64,$01,$37,$00
.byte $5A,$01,$4C,$00,$64,$01,$52,$00
.byte $5A,$01,$54,$00,$64,$01,$5A,$00
.byte $5A,$01,$5C,$00,$64,$01,$62,$00
.byte $5A,$01,$29,$00,$E0,$01,$30,$00
.byte $5A,$01,$31,$00,$E0,$01,$37,$00
.byte $5A,$01,$4C,$00,$E0,$01,$53,$00
.byte $5A,$01,$54,$00,$E0,$01,$5B,$00
.byte $5A,$01,$5C,$00,$E0,$01,$63,$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
.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
.byte $00,$00,$04,$00,$02,$00,$F0,$01
.byte $97,$00,$1B,$00,$10,$00,$AE,$00
.byte $1A,$00,$C1,$00,$3A,$00,$25,$01
.byte $45,$00,$C1,$00,$59,$00,$25,$01
.byte $64,$00,$C1,$00,$2C,$00,$25,$01
.byte $37,$00,$C1,$00,$49,$00,$25,$01
.byte $54,$00,$C1,$00,$1E,$00,$25,$01
.byte $29,$00,$43,$01,$1E,$00,$43,$01
.byte $64,$00,$81,$D3,$00
.word $C6,$63
PASCAL_STRING {"OK ",GLYPH_RETURN}
.word $C6,$44
PASCAL_STRING "Close"
.word $C6,$36
PASCAL_STRING "Open"
.word $C6,$53
PASCAL_STRING "Cancel Esc"
.word $C6,$28
PASCAL_STRING "Change Drive"
.byte $1C,$00,$19,$00,$1C
.byte $00,$70,$00,$1C,$00,$87,$00,$00
.byte $7F
PASCAL_STRING " Disk: "
PASCAL_STRING "Copy a File ..."
PASCAL_STRING "Source filename:"
PASCAL_STRING "Destination filename:"
.byte $1C,$00,$71,$00,$CF,$01,$7C,$00
.byte $1E,$00,$7B,$00,$1C,$00,$88,$00
.byte $CF,$01,$93,$00,$1E,$00,$92,$00
PASCAL_STRING "Delete a File ..."
PASCAL_STRING "File to delete:"
2018-01-21 03:33:15 +00:00
.assert * = $DAD8, error, "Segment length mismatch"
PAD_TO $DB00
2018-01-21 18:44:26 +00:00
;;; ==================================================
.addr sd0s, sd1s, sd2s, sd3s, sd4s, sd5s, sd6s
.addr sd7s, sd8s, sd9s, sd10s, sd11s, sd12s, sd13s
.addr selector_menu
;; Buffer for Run List entries
run_list_entries:
.res 640, 0
2018-01-15 05:23:48 +00:00
LDD9E: .byte 0
;; Icon to File mapping table
;;
;; each entry is 27 bytes long
;; .byte ??
;; .byte ??
2018-01-26 02:22:33 +00:00
;; .byte type/icon (bits 4,5,6 are type)
;; $00 = directory
;; $10 = system
;; $20 = binary
;; $30 = basic
;; $50 = text, generic
;; .word iconx (pixels)
;; .word icony (pixels)
;; .byte ??
;; .byte ??
;; .byte len, name (length-prefixed, spaces before/after; 17 byte buffer)
2018-01-12 06:38:03 +00:00
;;
;; (likely point into buffer at $ED00, which has room for 127*27)
file_address_table:
.assert * = file_table, error, "Entry point mismatch"
.res 256, 0
;; Used by DESKTOP_COPY_*_BUF
2018-01-05 05:05:54 +00:00
.assert * = bufnum, error, "Entry point mismatch"
bufnum: .byte $00
buf3len:.byte 0
buf3: .res 127, 0
selected_window_index: ; index of selected window (used to get prefix)
.assert * = path_index, error, "Entry point mismatch"
.byte 0
is_file_selected: ; 0 if no selection, 1 otherwise
.assert * = file_selected, error, "Entry point mismatch"
.byte 0
selected_file_index: ; index of selected icon (global, not w/in window)
.assert * = file_index, error, "Entry point mismatch"
.byte 0
.res 126, 0
;; Buffer for desktop windows
win_table:
2018-01-31 03:04:33 +00:00
.addr 0,winfo1,winfo2,winfo3,winfo4,winfo5,winfo6,winfo7,winfo8
;; Window to Path mapping table
window_address_table:
.assert * = path_table, error, "Entry point mismatch"
.addr $0000
.repeat 8,i
.addr window_path_table+i*65
.endrepeat
2018-01-16 04:33:32 +00:00
LDFC5: .byte 0
LDFC6: .byte 0
LDFC7: .byte 0
LDFC8: .byte 0
2018-01-16 04:33:32 +00:00
LDFC9: .res 145, 0
.byte $00,$00,$00,$00,$0D,$00,$00,$00
2018-01-06 05:03:10 +00:00
;; In here, at $E196, is a device table
.res 440, 0
.byte $00,$00,$00,$00,$7F,$64,$00,$1C
.byte $00,$1E,$00,$32,$00,$1E,$00,$40
2018-01-15 04:55:54 +00:00
.byte $00,$00,$00,$00,$00
LE22F: .byte 0
2018-01-21 03:33:15 +00:00
rect_E230: DEFINE_RECT 0,0,0,0
2018-01-15 04:55:54 +00:00
.byte $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
.byte $00,$00,$00,$00,$00,$00,$00,$00
2018-01-15 04:55:54 +00:00
.proc menu_click_params
menu_id:.byte 0
item_num:.byte 0
.endproc
.byte $00,$00,$00,$00,$00,$00
2018-01-15 05:16:36 +00:00
.byte $00,$04,$00,$00,$00
2018-01-29 05:18:00 +00:00
LE267: .byte $04,$00,$00 ; params for an MGTK $36 call
2018-01-24 23:39:12 +00:00
2018-01-15 05:16:36 +00:00
LE26A: .byte $04,$00
LE26C: .byte $00,$00,$00,$00,$04,$00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.addr str_all
LE27C: DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM sd0s
DEFINE_MENU_ITEM sd1s
DEFINE_MENU_ITEM sd2s
DEFINE_MENU_ITEM sd3s
DEFINE_MENU_ITEM sd4s
DEFINE_MENU_ITEM sd5s
DEFINE_MENU_ITEM sd6s
DEFINE_MENU_ITEM sd7s
DEFINE_MENU_ITEM sd8s
DEFINE_MENU_ITEM sd9s
DEFINE_MENU_ITEM sd10s
DEFINE_MENU_ITEM sd11s
DEFINE_MENU_ITEM sd12s
DEFINE_MENU_ITEM sd13s
startup_menu:
DEFINE_MENU 7
DEFINE_MENU_ITEM s00
DEFINE_MENU_ITEM s01
DEFINE_MENU_ITEM s02
DEFINE_MENU_ITEM s03
DEFINE_MENU_ITEM s04
DEFINE_MENU_ITEM s05
DEFINE_MENU_ITEM s06
str_all:PASCAL_STRING "All"
2018-01-29 05:18:00 +00:00
sd0: DEFINE_STRING "Slot drive ", sd0s
sd1: DEFINE_STRING "Slot drive ", sd1s
sd2: DEFINE_STRING "Slot drive ", sd2s
sd3: DEFINE_STRING "Slot drive ", sd3s
sd4: DEFINE_STRING "Slot drive ", sd4s
sd5: DEFINE_STRING "Slot drive ", sd5s
sd6: DEFINE_STRING "Slot drive ", sd6s
sd7: DEFINE_STRING "Slot drive ", sd7s
sd8: DEFINE_STRING "Slot drive ", sd8s
sd9: DEFINE_STRING "Slot drive ", sd9s
sd10: DEFINE_STRING "Slot drive ", sd10s
sd11: DEFINE_STRING "Slot drive ", sd11s
sd12: DEFINE_STRING "Slot drive ", sd12s
sd13: DEFINE_STRING "Slot drive ", sd13s
s00: PASCAL_STRING "Slot 0 "
s01: PASCAL_STRING "Slot 0 "
s02: PASCAL_STRING "Slot 0 "
s03: PASCAL_STRING "Slot 0 "
s04: PASCAL_STRING "Slot 0 "
s05: PASCAL_STRING "Slot 0 "
s06: PASCAL_STRING "Slot 0 "
.addr sd0, sd1, sd2, sd3, sd4, sd5, sd6, sd7
.addr sd8, sd9, sd10, sd11, sd12, sd13
2018-01-12 09:16:37 +00:00
str_profile_slot_x:
PASCAL_STRING "ProFile Slot x "
2018-01-12 09:16:37 +00:00
str_unidisk_xy:
PASCAL_STRING "UniDisk 3.5 Sx,y "
2018-01-12 09:16:37 +00:00
str_ramcard_slot_x:
PASCAL_STRING "RAMCard Slot x "
2018-01-12 09:16:37 +00:00
str_slot_drive:
PASCAL_STRING "Slot drive "
selector_menu:
DEFINE_MENU 5
DEFINE_MENU_ITEM label_add
DEFINE_MENU_ITEM label_edit
DEFINE_MENU_ITEM label_del
DEFINE_MENU_ITEM label_run, '0', '0'
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM run_list_entries + 0 * $10, '1', '1'
DEFINE_MENU_ITEM run_list_entries + 1 * $10, '2', '2'
DEFINE_MENU_ITEM run_list_entries + 2 * $10, '3', '3'
DEFINE_MENU_ITEM run_list_entries + 3 * $10, '4', '4'
DEFINE_MENU_ITEM run_list_entries + 4 * $10, '5', '5'
DEFINE_MENU_ITEM run_list_entries + 5 * $10, '6', '6'
DEFINE_MENU_ITEM run_list_entries + 6 * $10, '7', '7'
DEFINE_MENU_ITEM run_list_entries + 7 * $10, '8', '8'
label_add:
PASCAL_STRING "Add an Entry ..."
label_edit:
PASCAL_STRING "Edit an Entry ..."
label_del:
PASCAL_STRING "Delete an Entry ... "
label_run:
PASCAL_STRING "Run an Entry ..."
;; Apple Menu
apple_menu:
DEFINE_MENU 1
DEFINE_MENU_ITEM label_about
DEFINE_MENU_SEPARATOR
DEFINE_MENU_ITEM buf + 0 * $10
DEFINE_MENU_ITEM buf + 1 * $10
DEFINE_MENU_ITEM buf + 2 * $10
DEFINE_MENU_ITEM buf + 3 * $10
DEFINE_MENU_ITEM buf + 4 * $10
DEFINE_MENU_ITEM buf + 5 * $10
DEFINE_MENU_ITEM buf + 6 * $10
DEFINE_MENU_ITEM buf + 7 * $10
label_about:
PASCAL_STRING "About Apple II DeskTop ... "
buf: .res $80, 0
2018-01-13 05:24:07 +00:00
splash_menu:
2018-01-30 07:34:12 +00:00
DEFINE_MENU_BAR 1
DEFINE_MENU_BAR_ITEM 1, splash_menu_label, dummy_dd_menu
2018-01-12 18:01:28 +00:00
2018-01-13 05:24:07 +00:00
blank_menu:
2018-01-30 07:34:12 +00:00
DEFINE_MENU_BAR 1
DEFINE_MENU_BAR_ITEM 1, blank_dd_label, dummy_dd_menu
2018-01-13 05:24:07 +00:00
dummy_dd_menu:
DEFINE_MENU 1
DEFINE_MENU_ITEM dummy_dd_item
splash_menu_label:
PASCAL_STRING "Apple II DeskTop Version 1.1"
2018-01-13 05:24:07 +00:00
blank_dd_label:
PASCAL_STRING " "
dummy_dd_item:
PASCAL_STRING "Rien" ; ???
2018-01-12 18:01:28 +00:00
LE6BE:
2018-01-13 05:32:59 +00:00
.byte $00,$00,$00
LE6C1:
2018-01-31 03:04:33 +00:00
.addr winfo1title_ptr
.addr winfo2title_ptr
.addr winfo3title_ptr
.addr winfo4title_ptr
.addr winfo5title_ptr
.addr winfo6title_ptr
.addr winfo7title_ptr
.addr winfo8title_ptr
2018-01-12 18:01:28 +00:00
LE6D1:
.byte $00
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$70,$00,$00,$00,$8C
2018-01-21 19:47:40 +00:00
.byte $00,$00,$00
LE6E5: .byte $E7,$00,$00,$00
.proc text_buffer2
.addr data
2018-01-12 18:01:28 +00:00
length: .byte 0
data: .res 55, 0
.endproc
2018-01-30 07:58:53 +00:00
.macro WINFO_DEFN id, label, buflabel
.proc label
2018-01-30 07:58:53 +00:00
window_id: .byte id
options: .byte MGTK::option_go_away_box | MGTK::option_grow_box
title: .addr buflabel
2018-01-29 05:18:00 +00:00
hscroll:.byte MGTK::scroll_option_normal
vscroll:.byte MGTK::scroll_option_normal
2018-01-30 07:58:53 +00:00
hthumbmax: .byte 3
hthumbpos: .byte 0
vthumbmax: .byte 3
vthumbpos: .byte 0
status: .byte 0
reserved:.byte 0
mincontwidth: .word 170
maxcontwidth: .word 50
mincontlength: .word 545
maxcontlength: .word 175
2018-01-31 03:04:33 +00:00
port:
viewloc: DEFINE_POINT 20, 27
2018-01-30 07:58:53 +00:00
mapbits: .addr MGTK::screen_mapbits
mapwidth: .word MGTK::screen_mapwidth
2018-01-31 03:04:33 +00:00
cliprect: DEFINE_RECT 0, 0, 440, 120
penpattern:.res 8, $FF
2018-01-30 07:58:53 +00:00
colormasks: .byte MGTK::colormask_and, MGTK::colormask_or
penloc: DEFINE_POINT 0, 0
penwidth: .byte 1
penheight: .byte 1
2018-01-31 03:04:33 +00:00
penmode: .byte 0
2018-01-30 07:58:53 +00:00
textbg: .byte MGTK::textbg_white
fontptr: .addr DEFAULT_FONT
nextwinfo: .addr 0
.endproc
2018-01-31 03:04:33 +00:00
buflabel:.res 18, 0
.endmacro
2018-01-31 03:04:33 +00:00
WINFO_DEFN 1, winfo1, winfo1title_ptr
WINFO_DEFN 2, winfo2, winfo2title_ptr
WINFO_DEFN 3, winfo3, winfo3title_ptr
WINFO_DEFN 4, winfo4, winfo4title_ptr
WINFO_DEFN 5, winfo5, winfo5title_ptr
WINFO_DEFN 6, winfo6, winfo6title_ptr
WINFO_DEFN 7, winfo7, winfo7title_ptr
WINFO_DEFN 8, winfo8, winfo8title_ptr
;; 8 entries; each entry is 65 bytes long
;; * length-prefixed path string (no trailing /)
window_path_table:
.res (8*65), 0
.res 40, 0
2018-01-11 06:31:02 +00:00
str_items:
PASCAL_STRING " Items"
2018-01-11 06:31:02 +00:00
items_label_pos:
2018-01-15 04:55:54 +00:00
DEFINE_POINT 8, 10
LEBBE: DEFINE_POINT 0, 0
LEBC2: DEFINE_POINT 0, 0
2018-01-11 06:31:02 +00:00
str_k_in_disk:
PASCAL_STRING "K in disk"
2018-01-11 06:31:02 +00:00
str_k_available:
PASCAL_STRING "K available"
2018-01-11 06:31:02 +00:00
str_6_spaces:
PASCAL_STRING " "
LEBE3: .byte $00,$00,$00,$00,$00,$00,$00,$00
2018-01-15 04:55:54 +00:00
LEBEB: DEFINE_POINT 0, 0
LEBEF: DEFINE_POINT 0, 0
2018-01-24 23:39:12 +00:00
.byte $00,$00,$00,$00,$00,$00,$00,$00
2018-01-24 23:39:12 +00:00
.byte $00
LEBFC: .byte 0 ; flag of some sort ???
.byte $00,$00,$00,$00
;; Used by DESKTOP_COPY_*_BUF
table1: .addr $1B00,$1B80,$1C00,$1C80,$1D00,$1D80,$1E00,$1E80,$1F00
table2: .addr $1B01,$1B81,$1C01,$1C81,$1D01,$1D81,$1E01,$1E81,$1F01
2018-01-28 16:08:39 +00:00
desktop_active_winid:
.byte $00
2018-01-05 05:05:54 +00:00
2018-01-13 03:06:55 +00:00
LEC26:
2018-01-21 19:47:40 +00:00
.res 52, 0
date: .word 0
.res 10, 0
.word 500, 160
2018-01-21 03:33:15 +00:00
.assert * = $EC6A, error, "Segment length mismatch"
PAD_TO $ED00
;;; ==================================================
;;;
;;; $ED00 - $FAFF is data buffers
;;;
2018-01-12 06:38:03 +00:00
;;; (there's enough room here for 127 files at 27 bytes each)
;;; ==================================================
.org $FB00
2018-01-11 05:10:24 +00:00
type_table_addr: .addr type_table
type_icons_addr: .addr type_icons
LFB04: .addr LFB11
2018-01-11 05:10:24 +00:00
type_names_addr: .addr type_names
type_table:
.byte 8
.byte FT_TYPELESS, FT_SRC, FT_TEXT, FT_BINARY
.byte FT_DIRECTORY, FT_SYSTEM, FT_BASIC, FT_BAD
2018-01-14 05:20:59 +00:00
;; Used as bitwise-or mask, stored in L7624
;; ???
LFB11: .byte $60,$50,$50,$50,$20,$00,$10,$30,$10
type_names:
.byte " ???"
;; Same order as icon list below
.byte " ???", " SRC", " TXT", " BIN"
.byte " DIR", " SYS", " BAS", " SYS"
.byte " BAD"
type_icons:
.addr gen, src, txt, bin, dir, sys, bas, app
.macro DEFICON addr, stride, left, top, width, height
.addr addr
.word stride, left, top, width, height
.endmacro
gen: DEFICON generic_icon, 4, 0, 0, 27, 17
src:
txt: DEFICON text_icon, 4, 0, 0, 27, 17
bin: DEFICON binary_icon, 4, 0, 0, 27, 17
dir: DEFICON folder_icon, 4, 0, 0, 27, 17
sys: DEFICON sys_icon, 4, 0, 0, 27, 17
bas: DEFICON basic_icon, 4, 0, 0, 27, 17
app: DEFICON app_icon, 5, 0, 0, 34, 17
;;; Generic
generic_icon:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1000000)
.byte px(%1000000),px(%0000000),PX(%0000001),px(%1100000)
.byte px(%1000000),px(%0000000),PX(%0000001),px(%0110000)
.byte px(%1000000),px(%0000000),PX(%0000001),px(%0011000)
.byte px(%1000000),px(%0000000),PX(%0000001),PX(%0001100)
.byte px(%1000000),px(%0000000),PX(%0000001),PX(%0000110)
.byte px(%1000000),px(%0000000),PX(%0000001),PX(%0000011)
.byte px(%1000000),px(%0000000),PX(%0000001),PX(%1111111)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
generic_mask:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1100000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1110000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1111000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1111100)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1111110)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
;;; Text File
text_icon:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1000000)
.byte px(%1000000),px(%0000000),PX(%0000001),px(%1100000)
.byte px(%1001100),px(%0111110),PX(%0111111),px(%0110000)
.byte px(%1000000),px(%0000000),PX(%0000001),px(%0011000)
.byte px(%1001111),px(%1100111),px(%1000001),PX(%0001100)
.byte px(%1000000),px(%0000000),px(%0000001),px(%0000110)
.byte px(%1001111),px(%0011110),px(%0110001),PX(%0000011)
.byte px(%1000000),px(%0000000),PX(%0000001),PX(%1111111)
.byte px(%1000000),px(%0000000),px(%0000000),px(%0000001)
.byte px(%1001111),px(%1100110),px(%0111100),px(%1111001)
.byte px(%1000000),px(%0000000),px(%0000000),px(%0000001)
.byte px(%1001111),px(%0011110),px(%1111111),px(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1001111),px(%0011111),px(%1001111),px(%1100001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
text_mask:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1100000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1110000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1111000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1111100)
.byte PX(%1111111),PX(%1111111),PX(%1111111),px(%1111110)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
;;; Binary
binary_icon:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000110),px(%0110000),px(%0000000)
.byte px(%0000000),px(%0011000),px(%0001100),px(%0000000)
.byte px(%0000000),px(%1100000),px(%0000011),px(%0000000)
.byte px(%0000011),px(%0000000),px(%0000000),px(%1100000)
.byte px(%0001100),px(%0011000),px(%0011000),px(%0011000)
.byte px(%0110000),px(%0100100),px(%0101000),px(%0000110)
.byte px(%1000000),px(%0100100),px(%0001000),px(%0000001)
.byte px(%0110000),px(%0100100),px(%0001000),px(%0000110)
.byte px(%0001100),px(%0011000),px(%0001000),px(%0011000)
.byte px(%0000011),px(%0000000),px(%0000000),px(%1100000)
.byte px(%0000000),px(%1100000),px(%0000011),px(%0000000)
.byte px(%0000000),px(%0011000),px(%0001100),px(%0000000)
.byte px(%0000000),px(%0000110),px(%0110000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
binary_mask:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
.byte px(%0000000),PX(%0011111),px(%1111100),px(%0000000)
.byte px(%0000000),PX(%1111111),PX(%1111111),px(%0000000)
.byte px(%0000011),PX(%1111111),PX(%1111111),px(%1100000)
.byte PX(%0001111),PX(%1111111),PX(%1111111),px(%1111000)
.byte PX(%0111111),PX(%1111111),PX(%1111111),px(%1111110)
.byte PX(%0001111),PX(%1111111),PX(%1111111),px(%1111000)
.byte px(%0000011),PX(%1111111),PX(%1111111),px(%1100000)
.byte px(%0000000),PX(%1111111),PX(%1111111),px(%0000000)
.byte px(%0000000),PX(%0011111),px(%1111100),px(%0000000)
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
;;; Folder
folder_icon:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0011111),px(%1111110),px(%0000000),px(%0000000)
.byte px(%0100000),px(%0000001),px(%0000000),px(%0000000)
.byte PX(%0111111),PX(%1111111),PX(%1111111),px(%1111110)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte px(%1000000),px(%0000000),px(%0000000),PX(%0000001)
.byte PX(%0111111),PX(%1111111),PX(%1111111),px(%1111110)
folder_mask:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte PX(%0011111),px(%1111110),px(%0000000),px(%0000000)
.byte PX(%0111111),PX(%1111111),px(%0000000),px(%0000000)
.byte PX(%0111111),PX(%1111111),PX(%1111111),px(%1111110)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%0111111),PX(%1111111),PX(%1111111),px(%1111110)
;;; System (no .SYSTEM suffix)
sys_icon:
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0110000),px(%0000000),px(%0000000),px(%0000110)
.byte px(%0110011),px(%1111111),px(%1111111),px(%1100110)
.byte px(%0110011),px(%0000000),px(%0010000),px(%1100110)
.byte px(%0110011),px(%0000000),px(%0100000),px(%1100110)
.byte px(%0110011),px(%0010000),px(%1000100),px(%1100110)
.byte px(%0110011),px(%0100000),px(%0001000),px(%1100110)
.byte px(%0110011),px(%1111111),px(%1111111),px(%1100110)
.byte px(%0110000),px(%0000000),px(%0000000),px(%0000110)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000011)
.byte px(%1100110),px(%0000000),px(%0000000),px(%0000011)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000011)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
.byte px(%1100000),px(%0000000),px(%0000000),px(%0000011)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111)
sys_mask:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0001111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111100)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111100)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111100)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111100)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111100)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
;;; Basic
basic_icon:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000110),px(%0110000),px(%0000000)
.byte px(%0000000),px(%0011000),px(%0001100),px(%0000000)
.byte px(%0000000),px(%1100000),px(%0000011),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0111110),px(%0111000),px(%1111010),px(%0111100)
.byte px(%0100010),px(%1000100),px(%1000010),px(%1000110)
.byte px(%0111100),px(%1111100),px(%1111010),px(%1000000)
.byte px(%0100010),px(%1000100),px(%0001010),px(%1000110)
.byte px(%0111110),px(%1000100),px(%1111010),px(%0111100)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%1100000),px(%0000011),px(%0000000)
.byte px(%0000000),px(%0011000),px(%0001100),px(%0000000)
.byte px(%0000000),px(%0000110),px(%0110000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
basic_mask:
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
.byte px(%0000000),PX(%0011111),px(%1111100),px(%0000000)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte PX(%1111111),PX(%1111111),PX(%1111111),PX(%1111111)
.byte px(%0000000),PX(%0011111),px(%1111100),px(%0000000)
.byte px(%0000000),px(%0000111),px(%1110000),px(%0000000)
.byte px(%0000000),PX(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000)
;;; System (with .SYSTEM suffix)
app_icon:
.byte px(%0000000),px(%0000000),px(%0011000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%1100110),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000011),px(%0000001),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0001100),px(%0000000),px(%0110000),px(%0000000)
.byte px(%0000000),px(%0110000),px(%0000000),px(%0001100),px(%0000000)
.byte px(%0000001),px(%1000000),px(%0000000),px(%0000011),px(%0000000)
.byte px(%0000110),px(%0000000),px(%0000000),px(%0000000),px(%1100000)
.byte px(%0011000),px(%0000000),px(%0000001),px(%1111100),px(%0011000)
.byte px(%1100000),px(%0000000),px(%0000110),px(%0000011),px(%0000110)
.byte px(%0011000),px(%0000000),px(%0011000),px(%1110000),px(%1111000)
.byte px(%0000110),px(%0000111),px(%1111111),px(%1111100),px(%0011110)
.byte px(%0000001),px(%1000000),px(%0110000),px(%1100000),px(%0011110)
.byte px(%0000000),px(%0110000),px(%0001110),px(%0000000),px(%0011110)
.byte px(%0000000),px(%0001100),px(%0000001),PX(%1111111),px(%1111110)
.byte px(%0000000),px(%0000011),px(%0000001),px(%1000000),px(%0011110)
.byte px(%0000000),px(%0000000),px(%1100110),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0011000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
app_mask:
.byte px(%0000000),px(%0000000),px(%0011000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%1111110),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000011),px(%1111111),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0001111),px(%1111111),px(%1110000),px(%0000000)
.byte px(%0000000),px(%0111111),px(%1111111),px(%1111100),px(%0000000)
.byte px(%0000001),px(%1111111),px(%1111111),px(%1111111),px(%0000000)
.byte px(%0000111),px(%1111111),px(%1111111),px(%1111111),px(%1100000)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%1111111),px(%1111111),px(%1111111),px(%1111111),px(%1111110)
.byte px(%0011111),px(%1111111),px(%1111111),px(%1111111),px(%1111100)
.byte px(%0000111),px(%1111111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0000001),px(%1111111),px(%1111111),px(%1111111),px(%1111000)
.byte px(%0000000),px(%0111111),px(%1111111),px(%1111100),px(%1111000)
.byte px(%0000000),px(%0001111),px(%1111111),px(%1111000),px(%0000000)
.byte px(%0000000),px(%0000011),px(%1111111),px(%1000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%1111110),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0011000),px(%0000000),px(%0000000)
.byte px(%0000000),px(%0000000),px(%0000000),px(%0000000),px(%0000000)
2018-01-21 03:33:15 +00:00
.assert * = $FFBA, error, "Segment length mismatch"
PAD_TO $10000
2018-01-06 05:17:13 +00:00
;;; ==================================================
;;; Segment loaded into MAIN $4000-$BEFF
;;; ==================================================
.proc desktop_main
2017-10-12 15:04:27 +00:00
L0020 := $0020
L0800 := $0800
L0CB8 := $0CB8
L0CD7 := $0CD7
L0CF9 := $0CF9
L0D14 := $0D14
2017-12-31 03:21:34 +00:00
dynamic_routine_800 := $0800
dynamic_routine_5000 := $5000
dynamic_routine_7000 := $7000
dynamic_routine_9000 := $9000
2018-01-20 02:55:15 +00:00
dynamic_routine_disk_copy := 0
dynamic_routine_format_erase := 1
dynamic_routine_selector1 := 2
dynamic_routine_common := 3
dynamic_routine_file_copy := 4
dynamic_routine_file_delete := 5
dynamic_routine_selector2 := 6
dynamic_routine_restore5000 := 7
dynamic_routine_restore9000 := 8
2017-12-31 03:21:34 +00:00
.org $4000
2018-01-05 04:27:15 +00:00
;; Jump table
2018-01-20 22:31:48 +00:00
;; Entries marked with * are used by DAs
;; "Exported" by desktop.inc
L4000: jmp L4042 ; ???
2018-01-29 05:18:00 +00:00
JT_MGTK_RELAY: jmp MGTK_RELAY
2018-01-20 22:31:48 +00:00
L4006: jmp L8259 ; ???
L4009: jmp L830F ; ???
L400C: jmp L5E78 ; ???
L400F: jmp DESKTOP_AUXLOAD
JT_EJECT: jmp cmd_eject
JT_REDRAW_ALL: jmp redraw_windows ; *
JT_DESKTOP_RELAY: jmp DESKTOP_RELAY
JT_LOAD_SEG: jmp load_dynamic_routine
JT_CLEAR_SELECTION: jmp clear_selection ; *
JT_MLI_RELAY: jmp MLI_RELAY ; *
JT_COPY_TO_BUF: jmp DESKTOP_COPY_TO_BUF
JT_COPY_FROM_BUF: jmp DESKTOP_COPY_FROM_BUF
JT_NOOP: jmp cmd_noop
L402D: jmp L8707 ; ???
JT_SHOW_ALERT0: jmp DESKTOP_SHOW_ALERT0
JT_SHOW_ALERT: jmp DESKTOP_SHOW_ALERT
JT_LAUNCH_FILE: jmp launch_file
JT_CUR_POINTER: jmp set_pointer_cursor ; *
JT_CUR_WATCH: jmp set_watch_cursor
JT_RESTORE_SEF: jmp restore_dynamic_routine
2017-10-12 15:04:27 +00:00
2018-01-05 04:27:15 +00:00
;; API entry point
2017-10-12 15:04:27 +00:00
L4042: cli
sta ALTZPON
lda LCBANK1
lda LCBANK1
jsr L4530
ldx #$00
2018-01-05 05:05:54 +00:00
L4051: cpx buf3len
2017-10-12 15:04:27 +00:00
beq L4069
txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
ldy #$01
2017-12-31 02:02:15 +00:00
jsr DESKTOP_RELAY
2017-10-12 15:04:27 +00:00
pla
tax
inx
jmp L4051
L4069: lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-28 16:08:39 +00:00
sta LD2A9
sta double_click_flag
2017-10-12 15:04:27 +00:00
sta L40DF
sta $E26F
lda L599F
beq L4088
tay
jsr DESKTOP_SHOW_ALERT0
2018-01-30 16:57:36 +00:00
L4088: jsr reset_grafport3
2017-10-12 15:04:27 +00:00
inc L40DF
inc L40DF
lda L40DF
2018-01-11 05:10:24 +00:00
cmp machine_type
2017-10-12 15:04:27 +00:00
bcc L40A6
lda #$00
sta L40DF
jsr L4563
beq L40A6
jsr L40E0
L40A6: jsr L464E
2018-01-21 00:44:49 +00:00
jsr get_input
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2017-10-12 15:04:27 +00:00
beq L40B7
2018-01-29 05:18:00 +00:00
cmp #MGTK::apple_key
2017-10-12 15:04:27 +00:00
bne L40BD
2018-01-28 16:08:39 +00:00
L40B7: jsr handle_click
2017-10-12 15:04:27 +00:00
jmp L4088
L40BD: cmp #$03
bne L40C7
2018-01-21 00:44:49 +00:00
jsr menu_dispatch
2017-10-12 15:04:27 +00:00
jmp L4088
L40C7: cmp #$06
bne L40DC
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
sta L40F0
lda #$80
sta L40F1
jsr L410D
L40DC: jmp L4088
2017-12-31 02:02:15 +00:00
L40DF: .byte $00
2017-10-12 15:04:27 +00:00
L40E0: tsx
stx $E256
sta $E25B
jsr L59A0
lda #$00
sta $E25B
rts
2017-12-31 02:02:15 +00:00
L40F0: .byte $00
L40F1: .byte $00
2018-01-20 18:57:25 +00:00
redraw_windows:
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
sta L40F0
lda #$00
sta L40F1
L4100: jsr L48F0
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-12 07:03:53 +00:00
cmp #$06 ; ???
2017-10-12 15:04:27 +00:00
bne L412B
2018-01-21 00:44:49 +00:00
jsr get_input
2017-10-12 15:04:27 +00:00
L410D: jsr L4113
jmp L4100
2018-01-30 16:57:36 +00:00
L4113: MGTK_RELAY_CALL MGTK::BeginUpdate, event_params+1
2017-10-12 15:04:27 +00:00
bne L4151
jsr L4153
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::EndUpdate
2017-10-12 15:04:27 +00:00
rts
L412B: lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
lda L40F0
2018-01-28 16:08:39 +00:00
sta desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L4143
2018-01-23 16:33:12 +00:00
bit running_da_flag
2017-10-12 15:04:27 +00:00
bmi L4143
jsr L4244
L4143: bit L40F1
bpl L4151
2017-12-31 05:22:06 +00:00
DESKTOP_RELAY_CALL DESKTOP_REDRAW_ICONS
2017-10-12 15:04:27 +00:00
L4151: rts
2017-12-31 20:32:47 +00:00
L4152: .byte 0
2018-01-30 16:57:36 +00:00
L4153: lda event_params+1
2017-10-12 15:04:27 +00:00
cmp #$09
bcc L415B
rts
2018-01-28 16:08:39 +00:00
L415B: sta desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
lda #$80
sta L4152
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jsr L78EF
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L8855
jsr DESKTOP_ASSIGN_STATE
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$16
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
2018-01-30 16:57:36 +00:00
sbc grafport2::top
2017-10-12 15:04:27 +00:00
sta L4242
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-30 16:57:36 +00:00
sbc grafport2::top+1
2017-10-12 15:04:27 +00:00
sta L4243
lda L4242
cmp #$0F
lda L4243
sbc #$00
bpl L41CB
jsr L6E8A
ldx #$0B
ldy #$1F
2018-01-30 16:57:36 +00:00
lda grafport2,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
2018-01-30 16:57:36 +00:00
lda grafport2,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldx #$03
ldy #$17
2018-01-30 16:57:36 +00:00
lda grafport2,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
2018-01-30 16:57:36 +00:00
lda grafport2,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-05 05:05:54 +00:00
L41CB: ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bpl L41E2
jsr L6C19
lda #$00
sta L4152
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jmp L8874
2018-01-05 05:05:54 +00:00
L41E2: lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6E52
2018-01-16 04:57:02 +00:00
ldx #7
2018-01-30 16:57:36 +00:00
L41F0: lda grafport2::cliprect_x1,x
2018-01-21 03:33:15 +00:00
sta rect_E230,x
2017-10-12 15:04:27 +00:00
dex
bpl L41F0
lda #$00
sta L4241
L41FE: lda L4241
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
beq L4227
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-15 04:55:54 +00:00
sta LE22F
DESKTOP_RELAY_CALL $0D, LE22F
2017-10-12 15:04:27 +00:00
beq L4221
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $03, LE22F
2017-10-12 15:04:27 +00:00
L4221: inc L4241
jmp L41FE
L4227: lda #$00
sta L4152
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6E6E
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L8874
2018-01-30 16:57:36 +00:00
jmp reset_grafport3
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L4241: .byte 0
L4242: .byte 0
L4243: .byte 0
L4244: lda is_file_selected
2017-10-12 15:04:27 +00:00
bne L424A
L4249: rts
L424A: lda #$00
sta L42C3
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L42A5
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L4249
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jsr L6E8E
2018-01-16 04:57:02 +00:00
ldx #7
2018-01-30 16:57:36 +00:00
L4267: lda grafport2::cliprect_x1,x
2018-01-21 03:33:15 +00:00
sta rect_E230,x
2017-10-12 15:04:27 +00:00
dex
bpl L4267
L4270: lda L42C3
cmp is_file_selected
2017-10-12 15:04:27 +00:00
beq L42A2
tax
lda selected_file_index,x
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $0D, LE22F
2017-12-31 02:02:15 +00:00
beq L4296
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $03, LE22F
L4296: lda LE22F
2017-12-31 02:02:15 +00:00
jsr L8893
2017-10-12 15:04:27 +00:00
inc L42C3
jmp L4270
2018-01-30 16:57:36 +00:00
L42A2: jmp reset_grafport3
2017-10-12 15:04:27 +00:00
L42A5: lda L42C3
cmp is_file_selected
2017-10-12 15:04:27 +00:00
beq L42A2
tax
lda selected_file_index,x
2018-01-15 04:55:54 +00:00
sta LE22F
DESKTOP_RELAY_CALL $03, LE22F
2017-10-12 15:04:27 +00:00
inc L42C3
jmp L42A5
2017-12-31 02:02:15 +00:00
L42C3: .byte $00
2018-01-19 05:34:55 +00:00
;;; ==================================================
;;; Menu Dispatch
2018-01-21 00:44:49 +00:00
.proc menu_dispatch_impl
2018-01-19 05:34:55 +00:00
;; jump table for menu item handlers
2018-01-21 00:44:49 +00:00
dispatch_table:
2018-01-19 05:34:55 +00:00
;; Apple menu (1)
2018-01-19 05:57:25 +00:00
.addr cmd_about
.addr cmd_noop ; --------
.addr cmd_deskacc
.addr cmd_deskacc
.addr cmd_deskacc
.addr cmd_deskacc
.addr cmd_deskacc
.addr cmd_deskacc
.addr cmd_deskacc
.addr cmd_deskacc
2018-01-19 05:34:55 +00:00
;; File menu (2)
2018-01-19 05:57:25 +00:00
.addr cmd_new_folder
.addr cmd_noop ; --------
.addr cmd_open
.addr cmd_close
.addr cmd_close_all
.addr cmd_select_all
.addr cmd_noop ; --------
.addr cmd_copy_file
.addr cmd_delete_file
.addr cmd_noop ; --------
.addr cmd_eject
.addr cmd_quit
2018-01-19 05:34:55 +00:00
;; Selector menu (3)
2018-01-19 05:57:25 +00:00
.addr cmd_selector_action
.addr cmd_selector_action
.addr cmd_selector_action
.addr cmd_selector_action
.addr cmd_noop ; --------
.addr cmd_selector_item
.addr cmd_selector_item
.addr cmd_selector_item
.addr cmd_selector_item
.addr cmd_selector_item
.addr cmd_selector_item
.addr cmd_selector_item
.addr cmd_selector_item
2018-01-19 05:34:55 +00:00
;; View menu (4)
2018-01-19 05:57:25 +00:00
.addr cmd_view_by_icon
.addr cmd_view_by_name
.addr cmd_view_by_date
.addr cmd_view_by_size
.addr cmd_view_by_type
2018-01-19 05:34:55 +00:00
;; Special menu (5)
2018-01-19 05:57:25 +00:00
.addr cmd_check_drives
.addr cmd_noop ; --------
.addr cmd_format_disk
.addr cmd_erase_disk
.addr cmd_disk_copy
.addr cmd_noop ; --------
.addr cmd_lock
.addr cmd_unlock
.addr cmd_noop ; --------
.addr cmd_get_info
.addr cmd_get_size
.addr cmd_noop ; --------
.addr cmd_rename_icon
2018-01-19 05:34:55 +00:00
;; (6 is duplicated to 5)
2018-01-19 05:57:25 +00:00
;; no menu 7 ??
.addr cmd_check_drives ; duplicate???
.addr cmd_noop ; --------
.addr L59A0 ; ???
.addr L59A0
.addr L59A0
.addr L59A0
.addr L59A0
.addr L59A0
.addr L59A0
.addr L59A0
2018-01-19 05:34:55 +00:00
;; Startup menu (8)
2018-01-19 05:57:25 +00:00
.addr cmd_startup_item
.addr cmd_startup_item
.addr cmd_startup_item
.addr cmd_startup_item
.addr cmd_startup_item
.addr cmd_startup_item
.addr cmd_startup_item
2018-01-19 05:34:55 +00:00
;; indexed by menu id-1
2018-01-21 00:44:49 +00:00
offset_table:
.byte $00,$14,$2C,$46,$50,$50,$6A,$7E,$8C
flag: .byte $00
2018-01-19 05:34:55 +00:00
2018-01-26 02:22:33 +00:00
;; Handle accelerator keys
2018-01-21 00:44:49 +00:00
menu_dispatch:
2018-01-30 16:57:36 +00:00
lda event_params_modifiers
2018-01-26 02:22:33 +00:00
bne :+ ; either OA or CA ?
jmp menu_accelerators ; nope
: cmp #3 ; both OA + CA ?
bne :+ ; nope
2017-10-12 15:04:27 +00:00
rts
2018-01-26 02:22:33 +00:00
;; Non-menu keys
2018-01-30 16:57:36 +00:00
: lda event_params_key
2018-01-26 02:22:33 +00:00
ora #$20 ; force to lower-case
cmp #'h' ; OA-H (Highlight Icon)
bne :+
jmp cmd_higlight
: bit flag
bpl menu_accelerators
cmp #'w' ; OA-W (Activate Window)
bne :+
jmp cmd_activate
: cmp #'g' ; OA-G (Resize)
bne :+
jmp cmd_resize
: cmp #'m' ; OA-M (Move)
bne :+
jmp cmd_move
: cmp #'x' ; OA-X (Scroll)
bne menu_accelerators
jmp cmd_scroll
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
menu_accelerators:
2018-01-30 16:57:36 +00:00
lda event_params+1
2017-10-12 15:04:27 +00:00
sta $E25C
2018-01-30 16:57:36 +00:00
lda event_params+2
2017-10-12 15:04:27 +00:00
beq L43A1
lda #$01
L43A1: sta $E25D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::MenuKey, menu_click_params
2018-01-21 00:44:49 +00:00
menu_dispatch2:
ldx menu_click_params::menu_id
2017-10-12 15:04:27 +00:00
bne L43B3
rts
2018-01-19 05:34:55 +00:00
L43B3: dex ; x has top level menu id
2018-01-21 00:44:49 +00:00
lda offset_table,x
2017-10-12 15:04:27 +00:00
tax
ldy $E25B
dey
tya
asl a
sta L43E5
2017-12-31 02:02:15 +00:00
txa
2017-10-12 15:04:27 +00:00
clc
adc L43E5
tax
2018-01-21 00:44:49 +00:00
lda dispatch_table,x
2017-10-12 15:04:27 +00:00
sta L43E5
2018-01-21 00:44:49 +00:00
lda dispatch_table+1,x
2018-01-05 04:27:15 +00:00
sta L43E5+1
2017-10-12 15:04:27 +00:00
jsr L43E0
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::HiliteMenu, menu_click_params
2017-10-12 15:04:27 +00:00
rts
L43E0: tsx
stx $E256
2018-01-05 04:27:15 +00:00
L43E5 := *+1
2018-01-17 03:36:54 +00:00
jmp dummy1234 ; self-modified
2018-01-21 00:44:49 +00:00
.endproc
menu_dispatch := menu_dispatch_impl::menu_dispatch
menu_dispatch2 := menu_dispatch_impl::menu_dispatch2
menu_dispatch_flag := menu_dispatch_impl::flag
2018-01-19 05:34:55 +00:00
;;; ==================================================
2018-01-28 16:08:39 +00:00
;;; Handle click
2018-01-19 05:34:55 +00:00
2018-01-28 16:08:39 +00:00
.proc handle_click
tsx
2017-10-12 15:04:27 +00:00
stx $E256
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::FindWindow, event_params_coords
2018-01-31 05:42:26 +00:00
lda findwindow_params_which_area
2018-01-28 16:08:39 +00:00
bne not_desktop
;; Click on desktop
2018-01-21 01:16:31 +00:00
jsr detect_double_click
2018-01-28 16:08:39 +00:00
sta double_click_flag
lda #0
2018-01-31 05:42:26 +00:00
sta findwindow_params_window_id
2018-01-30 16:57:36 +00:00
DESKTOP_RELAY_CALL $09, event_params_coords ; maybe "was it an icon" ???
2018-01-28 16:08:39 +00:00
lda query_client_params_part ; ???
2017-10-12 15:04:27 +00:00
beq L4415
jmp L67D7
L4415: jmp L68AA
2018-01-28 16:08:39 +00:00
not_desktop:
2018-01-29 05:18:00 +00:00
cmp #MGTK::area_menubar ; menu?
2018-01-28 16:08:39 +00:00
bne not_menu
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MenuSelect, menu_click_params
2018-01-21 00:44:49 +00:00
jmp menu_dispatch2
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
not_menu:
pha ; which window - active or not?
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
cmp findwindow_params_window_id
2018-01-28 16:08:39 +00:00
beq handle_active_window_click
2017-10-12 15:04:27 +00:00
pla
2018-01-28 16:08:39 +00:00
jmp handle_inactive_window_click
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
.proc handle_active_window_click
pla
2018-01-29 05:18:00 +00:00
cmp #MGTK::area_content
2018-01-26 02:22:33 +00:00
bne :+
2018-01-21 01:16:31 +00:00
jsr detect_double_click
2018-01-28 16:08:39 +00:00
sta double_click_flag
2018-01-26 02:22:33 +00:00
jmp handle_client_click
2018-01-29 05:18:00 +00:00
: cmp #MGTK::area_dragbar
2018-01-26 02:22:33 +00:00
bne :+
jmp handle_title_click
2018-01-29 05:18:00 +00:00
: cmp #MGTK::area_grow_box
2018-01-26 02:22:33 +00:00
bne :+
jmp handle_resize_click
2018-01-29 05:18:00 +00:00
: cmp #MGTK::area_close_box
2018-01-28 16:08:39 +00:00
bne :+
2018-01-26 02:22:33 +00:00
jmp handle_close_click
2018-01-28 16:08:39 +00:00
: rts
.endproc
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
.proc handle_inactive_window_click
jmp L445D
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L445C: .byte 0
2018-01-20 18:57:25 +00:00
L445D: jsr clear_selection
2017-10-12 15:04:27 +00:00
ldx $D20E
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2018-01-15 04:55:54 +00:00
sta LE22F
lda LE22F
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
beq L44A6
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
sta L445C
jsr L8997
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
lda L445C
sta selected_window_index
2017-10-12 15:04:27 +00:00
lda #$01
sta is_file_selected
2018-01-15 04:55:54 +00:00
lda LE22F
sta selected_file_index
2018-01-31 05:42:26 +00:00
L44A6: MGTK_RELAY_CALL MGTK::SelectWindow, findwindow_params_window_id
2017-10-12 15:04:27 +00:00
lda $D20E
2018-01-28 16:08:39 +00:00
sta desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
L44B8: jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
jsr L6C19
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
lda #$00
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267 ; ???
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
and #$0F
sta $E268
inc $E268
lda #$01
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267 ; ???
2017-10-12 15:04:27 +00:00
rts
2018-01-28 16:08:39 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2018-01-30 16:57:36 +00:00
L44F2: MGTK_RELAY_CALL MGTK::GetWinPort, getwinport_params2
MGTK_RELAY_CALL MGTK::SetPort, grafport2
2017-10-12 15:04:27 +00:00
rts
2018-01-30 16:57:36 +00:00
L4505: MGTK_RELAY_CALL MGTK::GetWinPort, getwinport_params2
2017-10-12 15:04:27 +00:00
rts
rts
2018-01-30 16:57:36 +00:00
reset_grafport3:
MGTK_RELAY_CALL MGTK::InitPort, grafport3
MGTK_RELAY_CALL MGTK::SetPort, grafport3
2017-10-12 15:04:27 +00:00
rts
2018-01-21 16:37:01 +00:00
;;; ==================================================
.proc redraw_windows_and_desktop
jsr redraw_windows
2017-12-31 05:22:06 +00:00
DESKTOP_RELAY_CALL DESKTOP_REDRAW_ICONS
2017-10-12 15:04:27 +00:00
rts
2018-01-21 16:37:01 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
L4530: ldx #$00
2018-01-15 04:55:54 +00:00
ldy DEVCNT
L4535: lda DEVLST,y
2017-10-12 15:04:27 +00:00
and #$0F
cmp #$0B
beq L4559
L453E: dey
bpl L4535
stx L4597
stx L45A0
jsr L45B2
ldx L45A0
beq L4558
L454F: lda L45A0,x
sta L45A9,x
dex
bpl L454F
L4558: rts
2018-01-15 04:55:54 +00:00
L4559: lda DEVLST,y
2017-10-12 15:04:27 +00:00
inx
sta L4597,x
bne L453E
rts
L4563: lda L45A0
beq L4579
jsr L45B2
ldx L45A0
L456E: lda L45A0,x
cmp L45A9,x
bne L457C
dex
bne L456E
L4579: lda #$00
rts
L457C: lda L45A0,x
sta L45A9,x
lda L4597,x
2018-01-15 04:55:54 +00:00
ldy DEVCNT
L4588: cmp DEVLST,y
2017-10-12 15:04:27 +00:00
beq L4591
dey
bpl L4588
rts
L4591: tya
clc
adc #$03
rts
2017-12-31 02:02:15 +00:00
.byte $00
L4597: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00
L45A0: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00
L45A9: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00
2017-10-12 15:04:27 +00:00
L45B2: ldx L4597
beq L45C6
stx L45A0
L45BA: lda L4597,x
jsr L45C7
sta L45A0,x
dex
bne L45BA
L45C6: rts
L45C7: sta L4637
txa
pha
tya
pha
ldx #$11
lda L4637
and #$80
beq L45D9
ldx #$21
L45D9: stx L45EC
lda L4637
and #$70
lsr a
lsr a
lsr a
clc
adc L45EC
sta L45EC
2018-01-01 05:16:41 +00:00
L45EC := *+1
2018-01-15 04:55:54 +00:00
lda $BF00 ; self-modified
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-01 05:16:41 +00:00
lda #0
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
ldy #$07
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-01 05:16:41 +00:00
bne L4627
ldy #$FF
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc #$03
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda L4637
pha
rol a
pla
php
and #$20
lsr a
lsr a
lsr a
lsr a
plp
2018-01-01 05:16:41 +00:00
adc #1
sta L463A
jsr L4634
.byte 0 ; ???
2018-01-17 03:36:54 +00:00
.addr L4639
2018-01-01 05:16:41 +00:00
2018-01-17 03:36:54 +00:00
lda L463E
2018-01-01 05:16:41 +00:00
and #$10
2018-01-17 03:36:54 +00:00
beq L4627
2018-01-01 05:16:41 +00:00
lda #$FF
2018-01-17 03:36:54 +00:00
bne L4629
2018-01-01 05:16:41 +00:00
L4627: lda #$00
2017-10-12 15:04:27 +00:00
L4629: sta L4638
pla
tay
pla
tax
lda L4638
rts
2018-01-17 15:41:23 +00:00
L4634: jmp ($06)
2017-10-12 15:04:27 +00:00
2017-12-31 02:02:15 +00:00
L4637: .byte $00
2018-01-17 03:36:54 +00:00
L4638: .byte $00
L4639: .byte $03
L463A: .byte $01
.addr L463E
.byte 0
L463E: .res 16, 0
2018-01-24 05:52:53 +00:00
L464E: lda LD343
2017-10-12 15:04:27 +00:00
beq L465E
2018-01-24 05:52:53 +00:00
bit LD343+1
2017-10-12 15:04:27 +00:00
bmi L4666
jsr L67AB
jmp L4666
2018-01-24 05:52:53 +00:00
L465E: bit LD343+1
2017-10-12 15:04:27 +00:00
bmi L4666
jsr L67A3
L4666: lda is_file_selected
2017-10-12 15:04:27 +00:00
beq L46A8
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L4691
lda is_file_selected
2017-10-12 15:04:27 +00:00
cmp #$02
bcs L4697
lda selected_file_index
2017-10-12 15:04:27 +00:00
cmp $EBFB
bne L468B
jsr L678A
jsr L670C
lda #$00
sta $E26F
rts
L468B: jsr L6782
jmp L469A
L4691: jsr L678A
jmp L469A
L4697: jsr L6782
L469A: bit $E26F
bmi L46A7
jsr L6747
lda #$80
sta $E26F
L46A7: rts
L46A8: bit $E26F
bmi L46AE
rts
L46AE: jsr L678A
jsr L670C
lda #$00
sta $E26F
rts
2018-01-05 18:24:27 +00:00
MLI_RELAY:
sty L46CE
2017-10-12 15:04:27 +00:00
sta L46CF
stx L46CF+1
php
sei
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
sta ROMIN2
2017-10-12 15:04:27 +00:00
jsr MLI
L46CE: .byte $00
2018-01-17 03:36:54 +00:00
L46CF: .addr dummy0000
2017-10-12 15:04:27 +00:00
sta ALTZPON
tax
lda LCBANK1
lda LCBANK1
plp
txa
rts
2018-01-05 18:24:27 +00:00
.macro MLI_RELAY_CALL call, addr
ldy #(call)
lda #<(addr)
ldx #>(addr)
2018-01-06 07:33:21 +00:00
jsr desktop_main::MLI_RELAY
2018-01-05 18:24:27 +00:00
.endmacro
2018-01-18 05:23:58 +00:00
;;; ==================================================
;;; Launch file (double-click) ???
.proc launch_file
jmp begin
2017-10-12 15:04:27 +00:00
2018-01-14 08:17:32 +00:00
.proc get_file_info_params
params: .byte $A
path: .addr $220
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
2018-01-18 05:23:58 +00:00
begin:
2018-01-19 05:34:55 +00:00
jsr set_watch_cursor
2017-10-12 15:04:27 +00:00
ldx #$FF
L46F8: inx
lda $D355,x
2018-01-17 15:41:23 +00:00
sta $220,x
2017-10-12 15:04:27 +00:00
cpx $D355
bne L46F8
inx
2018-01-24 04:11:38 +00:00
lda #'/'
2018-01-17 15:41:23 +00:00
sta $220,x
2017-10-12 15:04:27 +00:00
ldy #$00
L470C: iny
inx
lda $D345,y
2018-01-17 15:41:23 +00:00
sta $220,x
2017-10-12 15:04:27 +00:00
cpy $D345
bne L470C
2018-01-17 15:41:23 +00:00
stx $220
2018-01-14 08:17:32 +00:00
MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params
2017-10-12 15:04:27 +00:00
beq L472B
jsr DESKTOP_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
rts
2018-01-14 08:17:32 +00:00
L472B: lda get_file_info_params::type
2018-01-18 05:23:58 +00:00
cmp #FT_BASIC
2017-10-12 15:04:27 +00:00
bne L4738
jsr L47B8
jmp L4755
2018-01-18 05:23:58 +00:00
L4738: cmp #FT_BINARY
2017-10-12 15:04:27 +00:00
bne L4748
2018-01-23 02:09:15 +00:00
lda BUTN0 ; only launch if a button is down
2017-12-31 20:04:22 +00:00
ora BUTN1
2017-10-12 15:04:27 +00:00
bmi L4755
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
rts
2018-01-18 05:23:58 +00:00
L4748: cmp #FT_SYSTEM
2017-10-12 15:04:27 +00:00
beq L4755
2018-01-22 07:00:34 +00:00
2018-01-18 05:23:58 +00:00
cmp #FT_S16
2017-10-12 15:04:27 +00:00
beq L4755
2018-01-22 07:00:34 +00:00
2017-10-12 15:04:27 +00:00
lda #$FA
jsr L4802
2018-01-22 07:00:34 +00:00
2018-01-17 03:36:54 +00:00
L4755: DESKTOP_RELAY_CALL $06
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CloseAll
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetMenu, blank_menu
2017-10-12 15:04:27 +00:00
ldx $D355
L4773: lda $D355,x
2018-01-17 15:41:23 +00:00
sta $220,x
2017-10-12 15:04:27 +00:00
dex
bpl L4773
ldx $D345
L477F: lda $D345,x
2018-01-07 19:45:52 +00:00
sta INVOKER_FILENAME,x
2017-10-12 15:04:27 +00:00
dex
bpl L477F
2018-01-24 05:52:53 +00:00
addr_call L4842, $280
2018-01-17 15:41:23 +00:00
addr_call L4842, $220
2017-10-12 15:04:27 +00:00
jsr L48BE
2018-01-07 19:45:52 +00:00
lda #<INVOKER
2018-01-20 05:57:58 +00:00
sta reset_and_invoke_target
2018-01-07 19:45:52 +00:00
lda #>INVOKER
2018-01-20 05:57:58 +00:00
sta reset_and_invoke_target+1
jmp reset_and_invoke
2018-01-18 05:23:58 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2018-01-14 08:17:32 +00:00
.proc get_file_info_params2
params: .byte $A
path: .addr $1800
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
2017-10-12 15:04:27 +00:00
L47B8: ldx $D355
stx L4816
L47BE: lda $D355,x
sta $1800,x
dex
bpl L47BE
inc $1800
ldx $1800
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $1800,x
L47D2: ldx $1800
ldy #$00
L47D7: inx
iny
lda L4817,y
sta $1800,x
cpy L4817
bne L47D7
stx $1800
2018-01-14 08:17:32 +00:00
MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params2
2017-10-12 15:04:27 +00:00
bne L47F3
rts
L47F3: ldx L4816
L47F6: lda $1800,x
cmp #$2F
beq L4808
dex
bne L47F6
L4800: lda #$FE
L4802: jsr DESKTOP_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
pla
pla
rts
L4808: cpx #$01
beq L4800
stx $1800
dex
stx L4816
jmp L47D2
2017-12-31 02:02:15 +00:00
L4816: .byte $00
L4817: PASCAL_STRING "Basic.system"
.res 30, 0
2018-01-17 15:41:23 +00:00
L4842: sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L484B: lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$61
bcc L4859
cmp #$7B
bcs L4859
and #$DF
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
L4859: dey
bne L484B
rts
2017-12-31 02:02:15 +00:00
L485D: .byte $00
2017-10-12 15:04:27 +00:00
L485E: .byte $E0
2017-12-31 02:02:15 +00:00
L485F: .byte $00
2018-01-17 03:36:54 +00:00
L4860: .byte $D0
L4861: .byte $00
2018-01-14 08:01:19 +00:00
L4862: .byte $00,$00,$00,$00,$00,$00
2017-12-31 02:02:15 +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
.byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00
2018-01-19 05:34:55 +00:00
;;; ==================================================
set_watch_cursor:
jsr hide_cursor
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetCursor, watch_cursor
2018-01-19 05:34:55 +00:00
jsr show_cursor
2017-10-12 15:04:27 +00:00
rts
2018-01-19 05:34:55 +00:00
set_pointer_cursor:
jsr hide_cursor
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetCursor, pointer_cursor
2018-01-19 05:34:55 +00:00
jsr show_cursor
2017-10-12 15:04:27 +00:00
rts
2018-01-19 05:34:55 +00:00
hide_cursor:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::HideCursor
2017-10-12 15:04:27 +00:00
rts
2018-01-19 05:34:55 +00:00
show_cursor:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::ShowCursor
2017-10-12 15:04:27 +00:00
rts
2018-01-19 05:34:55 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L48BE: ldx $E196
inx
L48C2: lda $E196,x
2018-01-15 04:55:54 +00:00
sta DEVCNT,x
2017-10-12 15:04:27 +00:00
dex
bpl L48C2
rts
2018-01-23 16:33:12 +00:00
.proc show_warning_dialog_num
sta warning_dialog_num
yax_call launch_dialog, index_warning_dialog, warning_dialog_num
2017-10-12 15:04:27 +00:00
rts
2018-01-23 16:33:12 +00:00
.endproc
2017-10-12 15:04:27 +00:00
lda #$88
sta L48E4
lda #$40
2018-01-05 04:27:15 +00:00
sta L48E4+1
L48E4 := *+1
2018-01-17 03:36:54 +00:00
jmp dummy1234 ; self-modified
2018-01-05 04:27:15 +00:00
2018-01-21 00:44:49 +00:00
get_input:
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::GetEvent, event_params
2017-10-12 15:04:27 +00:00
rts
2018-01-30 16:57:36 +00:00
L48F0: MGTK_RELAY_CALL MGTK::PeekEvent, event_params
2017-10-12 15:04:27 +00:00
rts
2018-01-30 16:57:36 +00:00
L48FA: MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
2017-10-12 15:04:27 +00:00
rts
2018-01-30 16:57:36 +00:00
L4904: MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2017-10-12 15:04:27 +00:00
rts
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 05:57:58 +00:00
.proc cmd_noop
rts
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_selector_action
2018-01-19 05:57:25 +00:00
jsr set_watch_cursor
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_selector1
jsr load_dynamic_routine
2018-01-20 03:41:20 +00:00
bmi done
2017-10-12 15:04:27 +00:00
lda $E25B
cmp #$03
bcs L492E
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_selector2
jsr load_dynamic_routine
2018-01-20 03:41:20 +00:00
bmi done
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_common
jsr load_dynamic_routine
2018-01-20 03:41:20 +00:00
bmi done
2018-01-19 05:34:55 +00:00
L492E: jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
lda $E25B
jsr dynamic_routine_9000
2017-10-12 15:04:27 +00:00
sta L498F
2018-01-19 05:34:55 +00:00
jsr set_watch_cursor
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_restore9000
jsr restore_dynamic_routine
2017-10-12 15:04:27 +00:00
lda $E25B
cmp #$04
2018-01-20 03:41:20 +00:00
bne done
2017-10-12 15:04:27 +00:00
lda L498F
2018-01-20 03:41:20 +00:00
bpl done
2017-10-12 15:04:27 +00:00
jsr L4AAD
jsr L4A77
jsr L4AFD
bpl L497A
jsr L8F24
2018-01-20 03:41:20 +00:00
bmi done
2017-10-12 15:04:27 +00:00
jsr L4968
2018-01-20 03:41:20 +00:00
done: jsr set_pointer_cursor
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
rts
L4968: jsr L4AAD
2018-01-24 05:52:53 +00:00
ldx $840
L496E: lda $840,x
2017-10-12 15:04:27 +00:00
sta $D355,x
dex
bpl L496E
jmp L4A17
L497A: jsr L4AAD
ldx L0800
L4980: lda L0800,x
sta $D355,x
dex
bpl L4980
jsr L4A17
2018-01-20 03:41:20 +00:00
jmp done
2017-10-12 15:04:27 +00:00
2018-01-14 07:09:51 +00:00
L498F: .byte $00
2018-01-20 03:41:20 +00:00
.endproc
;;; ==================================================
2018-01-14 08:17:32 +00:00
.proc get_file_info_params3
params: .byte $A
2018-01-17 15:41:23 +00:00
path: .addr $220
2018-01-14 08:17:32 +00:00
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
2018-01-19 05:57:25 +00:00
cmd_selector_item:
jmp L49A6
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L49A5: .byte 0
2018-01-20 03:41:20 +00:00
2017-10-12 15:04:27 +00:00
L49A6: lda $E25B
sec
sbc #$06
sta L49A5
2018-01-21 03:02:34 +00:00
jsr a_times_4
2017-10-12 15:04:27 +00:00
clc
adc #$1E
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$DB
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$0F
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
asl a
bmi L49FA
bcc L49E0
jsr L4AFD
beq L49FA
lda L49A5
jsr L4AEA
beq L49ED
lda L49A5
jsr L4A47
jsr L8F24
bpl L49ED
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
L49E0: jsr L4AFD
beq L49FA
lda L49A5
jsr L4AEA
bne L49FA
L49ED: lda L49A5
jsr L4B5F
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
jmp L4A0A
L49FA: lda L49A5
2018-01-21 03:02:34 +00:00
jsr a_times_6
2017-10-12 15:04:27 +00:00
clc
adc #$9E
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$DB
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
L4A0A: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L4A0F: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $D355,y
dey
bpl L4A0F
L4A17: ldy $D355
L4A1A: lda $D355,y
cmp #$2F
beq L4A24
dey
bpl L4A1A
L4A24: dey
sty L4A46
ldx #$00
iny
L4A2B: iny
inx
lda $D355,y
sta $D345,x
cpy $D355
bne L4A2B
stx $D345
lda L4A46
sta $D355
lda #$00
2018-01-18 05:23:58 +00:00
jmp launch_file
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L4A46: .byte 0
2017-10-12 15:04:27 +00:00
L4A47: pha
2018-01-21 03:02:34 +00:00
jsr a_times_6
2017-10-12 15:04:27 +00:00
clc
adc #$9E
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$DB
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L4A5A: lda ($06),y
2017-10-12 15:04:27 +00:00
sta L0800,y
dey
bpl L4A5A
pla
jsr L4B5F
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2017-10-12 15:04:27 +00:00
ldy #$00
lda ($08),y
tay
L4A6F: lda ($08),y
2018-01-24 05:52:53 +00:00
sta $840,y
2017-10-12 15:04:27 +00:00
dey
bpl L4A6F
L4A77: ldy L0800
L4A7A: lda L0800,y
cmp #$2F
beq L4A84
dey
bne L4A7A
L4A84: dey
sty L0800
2018-01-24 05:52:53 +00:00
ldy $840
L4A8B: lda $840,y
2017-10-12 15:04:27 +00:00
cmp #$2F
beq L4A95
dey
bne L4A8B
L4A95: dey
2018-01-24 05:52:53 +00:00
sty $840
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda #$08
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-24 05:52:53 +00:00
lda #<$840
2017-10-12 15:04:27 +00:00
sta $08
2018-01-24 05:52:53 +00:00
lda #>$840
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
jsr L4D19
rts
L4AAD: ldy $D355
L4AB0: lda $D355,y
sta L0800,y
dey
bpl L4AB0
2018-01-24 05:52:53 +00:00
addr_call L4B15, $840
2017-10-12 15:04:27 +00:00
ldy L0800
L4AC3: lda L0800,y
cmp #$2F
beq L4ACD
dey
bne L4AC3
L4ACD: dey
L4ACE: lda L0800,y
cmp #$2F
beq L4AD8
dey
bne L4ACE
L4AD8: dey
2018-01-24 05:52:53 +00:00
ldx $840
2017-10-12 15:04:27 +00:00
L4ADC: iny
inx
lda L0800,y
2018-01-24 05:52:53 +00:00
sta $840,x
2017-10-12 15:04:27 +00:00
cpy L0800
bne L4ADC
rts
L4AEA: jsr L4B5F
2018-01-14 08:17:32 +00:00
sta get_file_info_params3::path
stx get_file_info_params3::path+1
MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params3
2017-10-12 15:04:27 +00:00
rts
L4AFD: sta ALTZPOFF
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda $D3FF
tax
sta ALTZPON
lda LCBANK1
lda LCBANK1
txa
rts
L4B15: sta L4B2B
stx L4B2C
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldx $D3EE
L4B27: lda $D3EE,x
2018-01-01 05:16:41 +00:00
L4B2B := *+1
L4B2C := *+2
2018-01-17 03:36:54 +00:00
sta dummy1234,x
2018-01-01 05:16:41 +00:00
dex
2017-10-12 15:04:27 +00:00
bpl L4B27
sta ALTZPON
lda LCBANK1
lda LCBANK1
rts
2018-01-06 07:33:21 +00:00
L4B3A: sta L4B50
2017-10-12 15:04:27 +00:00
stx L4B51
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldx $D3AD
L4B4C: lda $D3AD,x
2018-01-01 05:16:41 +00:00
L4B50 := *+1
L4B51 := *+2
2018-01-17 03:36:54 +00:00
sta dummy1234,x
2018-01-01 05:16:41 +00:00
dex
2017-10-12 15:04:27 +00:00
bpl L4B4C
sta ALTZPON
lda LCBANK1
lda LCBANK1
rts
L4B5F: sta L4BB0
2018-01-24 05:37:41 +00:00
addr_call L4B15, path_buffer
2017-10-12 15:04:27 +00:00
lda L4BB0
2018-01-21 03:02:34 +00:00
jsr a_times_6
2017-10-12 15:04:27 +00:00
clc
adc #$9E
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$DB
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L4BB1
tay
2018-01-17 15:41:23 +00:00
L4B81: lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
cmp #$2F
beq L4B8C
dey
bne L4B81
L4B8C: dey
2018-01-17 15:41:23 +00:00
L4B8D: lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
cmp #$2F
beq L4B98
dey
bne L4B8D
L4B98: dey
2018-01-24 05:37:41 +00:00
ldx path_buffer
2017-10-12 15:04:27 +00:00
L4B9C: inx
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-24 05:37:41 +00:00
sta path_buffer,x
2017-10-12 15:04:27 +00:00
cpy L4BB1
bne L4B9C
2018-01-24 05:37:41 +00:00
stx path_buffer
2017-10-12 15:04:27 +00:00
lda #$76
ldx #$4F
rts
2017-12-31 20:32:47 +00:00
L4BB0: .byte 0
L4BB1: .byte 0
2018-01-20 03:41:20 +00:00
;;; ==================================================
2018-01-20 05:57:58 +00:00
.proc cmd_about
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_about_dialog, $0000
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 05:57:58 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_deskacc_impl
2018-01-23 16:33:12 +00:00
ptr := $6
2018-01-20 03:41:20 +00:00
2018-01-28 16:08:39 +00:00
zp_use_flag1:
.byte $80
2018-01-20 03:41:20 +00:00
2018-01-30 16:57:36 +00:00
start: jsr reset_grafport3
2018-01-19 05:34:55 +00:00
jsr set_watch_cursor
2018-01-23 16:33:12 +00:00
;; Find DA name
lda $E25B ; menu item index (1-based)
2017-10-12 15:04:27 +00:00
sec
2018-01-23 16:33:12 +00:00
sbc #3 ; About and separator before first item
2018-01-21 03:02:34 +00:00
jsr a_times_4
2017-10-12 15:04:27 +00:00
clc
2018-01-23 15:48:49 +00:00
adc #<buf
2018-01-23 16:33:12 +00:00
sta ptr
2017-10-12 15:04:27 +00:00
txa
2018-01-23 15:48:49 +00:00
adc #>buf
2018-01-23 16:33:12 +00:00
sta ptr+1
;; Compute total length
ldy #0
lda (ptr),y
2017-10-12 15:04:27 +00:00
tay
clc
2018-01-23 16:33:12 +00:00
adc prefix_length
2018-01-01 05:16:41 +00:00
pha
tax
2018-01-23 16:33:12 +00:00
;; Append name to path
: lda ($06),y
2018-01-23 15:48:49 +00:00
sta str_desk_acc,x
2017-10-12 15:04:27 +00:00
dex
dey
2018-01-23 16:33:12 +00:00
bne :-
2017-10-12 15:04:27 +00:00
pla
2018-01-23 16:33:12 +00:00
sta str_desk_acc ; update length
;; Convert spaces to periods
2018-01-23 15:48:49 +00:00
ldx str_desk_acc
2018-01-23 16:33:12 +00:00
: lda str_desk_acc,x
cmp #' '
bne nope
lda #'.'
2018-01-23 15:48:49 +00:00
sta str_desk_acc,x
2018-01-23 16:33:12 +00:00
nope: dex
bne :-
;; Load the DA
jsr open
bmi done
lda open_params_ref_num
2018-01-23 15:48:49 +00:00
sta read_params_ref_num
sta close_params_ref_num
2018-01-23 16:33:12 +00:00
jsr read
jsr close
2017-10-12 15:04:27 +00:00
lda #$80
2018-01-23 16:33:12 +00:00
sta running_da_flag
;; Invoke it
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetZP1, zp_use_flag0
MGTK_RELAY_CALL MGTK::SetZP1, zp_use_flag1
2018-01-23 16:33:12 +00:00
jsr DA_LOAD_ADDRESS
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetZP1, zp_use_flag0
2018-01-23 16:33:12 +00:00
lda #0
sta running_da_flag
;; Restore state
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2018-01-23 16:33:12 +00:00
done: jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
rts
2018-01-23 16:33:12 +00:00
open: yxa_call MLI_RELAY, OPEN, open_params
bne :+
2017-10-12 15:04:27 +00:00
rts
2018-01-23 16:33:12 +00:00
: lda #warning_msg_insert_system_disk
jsr show_warning_dialog_num
beq open ; ok, so try again
lda #$FF ; cancel, so fail
2017-10-12 15:04:27 +00:00
rts
2018-01-23 16:33:12 +00:00
read: yxa_jump MLI_RELAY, READ, read_params
2017-10-12 15:04:27 +00:00
2018-01-23 16:33:12 +00:00
close: yxa_jump MLI_RELAY, CLOSE, close_params
2017-10-12 15:04:27 +00:00
2018-01-23 16:33:12 +00:00
unused: .byte 0 ; ???
2018-01-23 15:48:49 +00:00
.proc open_params
params: .byte 3
pathname:.addr str_desk_acc
buffer: .addr $1C00
ref_num:.byte 0
.endproc
open_params_ref_num := open_params::ref_num
.proc read_params
params: .byte 4
ref_num:.byte 0
2018-01-23 16:33:12 +00:00
buffer: .addr DA_LOAD_ADDRESS
request:.word DA_MAX_SIZE
2018-01-23 15:48:49 +00:00
trans: .word 0
.endproc
read_params_ref_num := read_params::ref_num
.proc close_params
params: .byte 1
ref_num:.byte 0
.endproc
close_params_ref_num := close_params::ref_num
2018-01-23 16:33:12 +00:00
.define prefix "Desk.acc/"
prefix_length:
.byte .strlen(prefix)
2018-01-23 15:48:49 +00:00
str_desk_acc:
2018-01-23 16:33:12 +00:00
PASCAL_STRING prefix, .strlen(prefix) + 15
2018-01-23 15:48:49 +00:00
2018-01-20 03:41:20 +00:00
.endproc
cmd_deskacc := cmd_deskacc_impl::start
2018-01-19 05:34:55 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-23 16:33:12 +00:00
;; high bit set while a DA is running
running_da_flag:
.byte 0
2018-01-20 03:41:20 +00:00
;;; ==================================================
.proc cmd_copy_file
2018-01-19 05:57:25 +00:00
jsr set_watch_cursor
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_common
jsr load_dynamic_routine
2017-10-12 15:04:27 +00:00
bmi L4CD6
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_file_copy
jsr load_dynamic_routine
2017-10-12 15:04:27 +00:00
bmi L4CD6
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
lda #$00
jsr dynamic_routine_5000
2017-10-12 15:04:27 +00:00
pha
2018-01-19 05:34:55 +00:00
jsr set_watch_cursor
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_restore5000
jsr restore_dynamic_routine
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
pla
bpl L4CCD
jmp L4CD6
L4CCD: jsr L4D19
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
jsr L8F18
L4CD6: pha
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
pla
2018-01-24 04:11:38 +00:00
bpl :+
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-24 04:11:38 +00:00
: addr_call L6FAF, LDFC9
beq :+
2017-10-12 15:04:27 +00:00
pha
jsr L6F0D
pla
jmp L5E78
2018-01-24 04:11:38 +00:00
: ldy #1
2017-10-12 15:04:27 +00:00
L4CF3: iny
2018-01-16 04:33:32 +00:00
lda LDFC9,y
2018-01-24 04:11:38 +00:00
cmp #'/'
beq :+
2018-01-16 04:33:32 +00:00
cpy LDFC9
2017-10-12 15:04:27 +00:00
bne L4CF3
iny
2018-01-24 04:11:38 +00:00
: dey
2018-01-16 04:33:32 +00:00
sty LDFC9
addr_call L6FB7, LDFC9
2018-01-24 04:11:38 +00:00
lda #<LDFC9
ldx #>LDFC9
2018-01-16 04:33:32 +00:00
ldy LDFC9
2017-10-12 15:04:27 +00:00
jsr L6F4B
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
L4D19: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L4D1E: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E00A,y
dey
bpl L4D1E
ldy #$00
lda ($08),y
tay
L4D2B: lda ($08),y
2018-01-16 04:33:32 +00:00
sta LDFC9,y
2017-10-12 15:04:27 +00:00
dey
bpl L4D2B
2018-01-24 04:11:38 +00:00
addr_call L6F90, LDFC9
2017-10-12 15:04:27 +00:00
ldx #$01
iny
iny
2018-01-16 04:33:32 +00:00
L4D3E: lda LDFC9,y
2017-10-12 15:04:27 +00:00
sta $E04B,x
2018-01-16 04:33:32 +00:00
cpy LDFC9
2017-10-12 15:04:27 +00:00
beq L4D4E
iny
inx
jmp L4D3E
L4D4E: stx $E04B
2018-01-16 04:33:32 +00:00
lda LDFC9
2017-10-12 15:04:27 +00:00
sec
sbc $E04B
2018-01-16 04:33:32 +00:00
sta LDFC9
dec LDFC9
2017-10-12 15:04:27 +00:00
rts
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_delete_file
2018-01-19 05:57:25 +00:00
jsr set_watch_cursor
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_common
jsr load_dynamic_routine
2017-10-12 15:04:27 +00:00
bmi L4D9D
2018-01-20 05:57:58 +00:00
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_file_delete
jsr load_dynamic_routine
2017-10-12 15:04:27 +00:00
bmi L4D9D
2018-01-20 05:57:58 +00:00
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
lda #$01
jsr dynamic_routine_5000
2017-10-12 15:04:27 +00:00
pha
2018-01-19 05:34:55 +00:00
jsr set_watch_cursor
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_restore5000
jsr restore_dynamic_routine
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
pla
bpl L4D8A
jmp L4D9D
L4D8A: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L4D8F: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E00A,y
dey
bpl L4D8F
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
jsr L8F1B
L4D9D: pha
2018-01-19 05:34:55 +00:00
jsr set_pointer_cursor
2017-10-12 15:04:27 +00:00
pla
bpl L4DA7
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-25 04:20:39 +00:00
L4DA7: addr_call L6F90, $E00A
2017-10-12 15:04:27 +00:00
sty $E00A
2018-01-11 05:56:19 +00:00
addr_call L6FAF, $E00A
2017-10-12 15:04:27 +00:00
beq L4DC2
pha
jsr L6F0D
pla
jmp L5E78
L4DC2: ldy #$01
L4DC4: iny
lda $E00A,y
cmp #$2F
beq L4DD2
cpy $E00A
bne L4DC4
iny
L4DD2: dey
sty $E00A
2018-01-11 05:56:19 +00:00
addr_call L6FB7, $E00A
2017-10-12 15:04:27 +00:00
lda #$0A
ldx #$E0
ldy $E00A
jsr L6F4B
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_open
2018-01-19 07:10:37 +00:00
ldx #$00
L4DEC: cpx is_file_selected
2017-10-12 15:04:27 +00:00
bne L4DF2
rts
L4DF2: txa
pha
lda selected_file_index,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$70
bne L4E10
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
jsr L6A8A
jmp L4E14
L4E10: cmp #$40
bcc L4E1A
L4E14: pla
tax
inx
jmp L4DEC
L4E1A: sta L4E71
lda is_file_selected
2017-10-12 15:04:27 +00:00
cmp #$02
bcs L4E14
pla
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L4E34: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $D355,y
dey
bpl L4E34
lda selected_file_index
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$09
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
clc
adc #$09
tay
dex
dey
2018-01-17 15:41:23 +00:00
L4E51: lda ($06),y
2018-01-24 05:52:53 +00:00
sta LD343+1,x
2017-10-12 15:04:27 +00:00
dey
dex
bne L4E51
ldy #$09
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
dex
dex
stx $D345
lda L4E71
cmp #$20
bcc L4E6E
lda L4E71
2018-01-18 05:23:58 +00:00
L4E6E: jmp launch_file
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L4E71: .byte 0
2018-01-20 03:41:20 +00:00
.endproc
2018-01-19 07:10:37 +00:00
2018-01-20 03:41:20 +00:00
;;; ==================================================
.proc cmd_close
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L4E78
rts
2018-01-20 18:57:25 +00:00
L4E78: jsr clear_selection
2017-10-12 15:04:27 +00:00
dec $EC2E
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bmi L4EB4
2018-01-28 16:08:39 +00:00
DESKTOP_RELAY_CALL $07, desktop_active_winid
2018-01-15 05:23:48 +00:00
lda LDD9E
2017-10-12 15:04:27 +00:00
sec
2018-01-05 05:05:54 +00:00
sbc buf3len
2018-01-15 05:23:48 +00:00
sta LDD9E
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-05 05:05:54 +00:00
L4EA5: cpx buf3len
2017-10-12 15:04:27 +00:00
beq L4EB4
2018-01-05 05:05:54 +00:00
lda buf3,x
jsr DESKTOP_FREE_SPACE
2017-10-12 15:04:27 +00:00
inx
jmp L4EA5
L4EB4: ldx #$00
txa
2018-01-05 05:05:54 +00:00
L4EB7: sta buf3,x
cpx buf3len
2017-10-12 15:04:27 +00:00
beq L4EC3
inx
jmp L4EB7
2018-01-05 05:05:54 +00:00
L4EC3: sta buf3len
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, desktop_active_winid
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2018-01-15 04:55:54 +00:00
sta LE22F
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
sta selected_window_index
2017-10-12 15:04:27 +00:00
jsr L8997
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
lda #$01
sta is_file_selected
2018-01-15 04:55:54 +00:00
lda LE22F
sta selected_file_index
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2017-10-12 15:04:27 +00:00
jsr L7345
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
lda #$00
2018-01-13 03:06:55 +00:00
sta LEC26,x
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrontWindow, desktop_active_winid
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L4F3C
2017-12-31 05:22:06 +00:00
DESKTOP_RELAY_CALL DESKTOP_REDRAW_ICONS
2017-10-12 15:04:27 +00:00
L4F3C: lda #$00
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267 ; ???
2017-10-12 15:04:27 +00:00
jsr L66A2
2018-01-30 16:57:36 +00:00
jmp reset_grafport3
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_close_all
2018-01-28 16:08:39 +00:00
lda desktop_active_winid ; current window
2018-01-20 05:57:58 +00:00
beq done ; nope, done!
jsr cmd_close ; close it...
jmp cmd_close_all ; and try again
done: rts
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_disk_copy
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_disk_copy
jsr load_dynamic_routine
2018-01-20 05:57:58 +00:00
bmi fail
jmp dynamic_routine_800
2017-10-12 15:04:27 +00:00
2018-01-20 05:57:58 +00:00
fail: rts
2018-01-20 03:41:20 +00:00
.endproc
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_new_folder_impl
2017-10-12 15:04:27 +00:00
2017-12-31 02:02:15 +00:00
L4F67: .byte $00
L4F68: .byte $00
2018-01-14 07:09:51 +00:00
L4F69: .byte $00
2018-01-14 07:58:16 +00:00
.proc create_params
params: .byte 7
2018-01-24 05:37:41 +00:00
path: .addr path_buffer
2018-01-20 03:41:20 +00:00
access: .byte %11000011 ; destroy/rename/write/read
type: .byte FT_DIRECTORY
2018-01-14 07:58:16 +00:00
auxtype:.word 0
2018-01-20 03:41:20 +00:00
storage:.byte ST_LINKED_DIRECTORY
2018-01-14 07:58:16 +00:00
cdate: .word 0
ctime: .word 0
.endproc
2018-01-24 05:37:41 +00:00
path_buffer:
.res 65, 0 ; buffer is used elsewhere too
2018-01-14 07:58:16 +00:00
2018-01-28 16:08:39 +00:00
start: lda desktop_active_winid
2017-10-12 15:04:27 +00:00
sta L4F67
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_new_folder_dialog, L4F67
2018-01-28 16:08:39 +00:00
L4FC6: lda desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L4FD4
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2017-10-12 15:04:27 +00:00
sta L4F68
stx L4F69
L4FD4: lda #$80
sta L4F67
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_new_folder_dialog, L4F67
2017-10-12 15:04:27 +00:00
beq L4FE7
jmp L504B
2018-01-17 15:41:23 +00:00
L4FE7: stx $06+1
2017-10-12 15:04:27 +00:00
stx L504F
2018-01-17 15:41:23 +00:00
sty $06
2017-10-12 15:04:27 +00:00
sty L504E
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L4FF6: lda ($06),y
2018-01-24 05:37:41 +00:00
sta path_buffer,y
2017-10-12 15:04:27 +00:00
dey
bpl L4FF6
ldx #$03
: lda DATELO,x
2018-01-14 07:58:16 +00:00
sta create_params::cdate,x
2017-10-12 15:04:27 +00:00
dex
bpl :-
2018-01-14 07:58:16 +00:00
MLI_RELAY_CALL CREATE, create_params
2017-10-12 15:04:27 +00:00
beq L5027
jsr DESKTOP_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
lda L504E
sta L4F68
lda L504F
sta L4F69
jmp L4FC6
rts
L5027: lda #$40
sta L4F67
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_new_folder_dialog, L4F67
2018-01-24 05:37:41 +00:00
addr_call L6F90, path_buffer
sty path_buffer
addr_call L6FAF, path_buffer
2017-10-12 15:04:27 +00:00
beq L504B
2017-12-31 02:02:15 +00:00
jsr L5E78
2018-01-21 16:37:01 +00:00
L504B: jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L504E: .byte 0
L504F: .byte 0
2018-01-20 03:41:20 +00:00
.endproc
cmd_new_folder := cmd_new_folder_impl::start
2018-01-24 05:37:41 +00:00
path_buffer := cmd_new_folder_impl::path_buffer ; ???
2018-01-20 03:41:20 +00:00
;;; ==================================================
2018-01-19 07:10:37 +00:00
2018-01-20 03:41:20 +00:00
.proc cmd_eject
2018-01-19 05:57:25 +00:00
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L5056
L5055: rts
L5056: lda is_file_selected
2017-10-12 15:04:27 +00:00
beq L5055
cmp #$01
bne L5067
lda selected_file_index
2017-10-12 15:04:27 +00:00
cmp $EBFB
beq L5055
L5067: lda #$00
tax
tay
L506B: lda selected_file_index,y
2017-10-12 15:04:27 +00:00
cmp $EBFB
beq L5077
sta $1800,x
inx
L5077: iny
cpy is_file_selected
2017-10-12 15:04:27 +00:00
bne L506B
dex
stx L5098
jsr L8F15
L5084: ldx L5098
lda $1800,x
sta L533F
jsr L59A8
dec L5098
bpl L5084
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
L5098: .byte $00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_quit_impl
2018-01-19 07:10:37 +00:00
2018-01-20 03:41:20 +00:00
stack_data:
.addr $DEAF,$DEAD ; ???
quit_code:
.byte $18,$FB,$5C,$04,$D0,$E0
2018-01-20 05:57:58 +00:00
;; 65816 code:
;; 18 clc ; clear carry
;; FB xce ; exchange carry/emulation (i.e. turn on 16 bit)
;; 5C 04 D0 E0 jmp $E0D004 ; long jump
2018-01-20 03:41:20 +00:00
.proc quit_params
params: .byte 4
.byte 0
.word 0
.byte 0
.word 0
.endproc
start:
ldx #3
: lda stack_data,x
sta $0102,x ; Populate stack ???
2017-10-12 15:04:27 +00:00
dex
2018-01-20 03:41:20 +00:00
bpl :-
;; Install new quit routine
2017-10-12 15:04:27 +00:00
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2018-01-20 03:41:20 +00:00
ldx #5
: lda quit_code,x
sta SELECTOR,x
2017-10-12 15:04:27 +00:00
dex
2018-01-20 03:41:20 +00:00
bpl :-
;; Restore machine to text state
2017-10-12 15:04:27 +00:00
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
lda ROMIN2
2017-12-31 02:02:15 +00:00
jsr SETVID
jsr SETKBD
jsr INIT
jsr HOME
2017-12-31 20:04:22 +00:00
sta TXTSET
sta LOWSCR
sta LORES
sta MIXCLR
sta DHIRESOFF
sta CLRALTCHAR
sta CLR80VID
sta CLR80COL
2018-01-20 03:41:20 +00:00
MLI_CALL QUIT, quit_params
.endproc
cmd_quit := cmd_quit_impl::start
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_view_by_icon
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L50FF
rts
L50FF: dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bne L5106
rts
2018-01-28 16:08:39 +00:00
L5106: lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
ldx #$00
txa
2018-01-05 05:05:54 +00:00
L5112: cpx buf3len
2017-10-12 15:04:27 +00:00
beq L511E
2018-01-05 05:05:54 +00:00
sta buf3,x
2017-10-12 15:04:27 +00:00
inx
jmp L5112
2018-01-05 05:05:54 +00:00
L511E: sta buf3len
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
sta LE6D1,x
2017-10-12 15:04:27 +00:00
jsr L52DF
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jsr L6E8E
jsr L4904
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect_x1
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L7D5D
sta L51EB
stx L51EC
sty L51ED
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$1F
lda #$00
2018-01-17 15:41:23 +00:00
L5162: sta ($06),y
2017-10-12 15:04:27 +00:00
dey
cpy #$1B
bne L5162
ldy #$23
ldx #$03
L516D: lda L51EB,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
bpl L516D
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L763A
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6E52
lda #$00
sta L51EF
L518D: lda L51EF
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
beq L51A7
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
ldy #$01
2017-12-31 02:02:15 +00:00
jsr DESKTOP_RELAY
2017-10-12 15:04:27 +00:00
inc L51EF
jmp L518D
2018-01-30 16:57:36 +00:00
L51A7: jsr reset_grafport3
2017-10-12 15:04:27 +00:00
jsr L6E6E
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
jsr L6DB1
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L51E3
lda is_file_selected
2017-10-12 15:04:27 +00:00
beq L51E3
sta L51EF
L51C0: ldx L51EF
lda is_file_selected,x
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
jsr L6E8E
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8893
dec L51EF
bne L51C0
L51E3: lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L51EB: .byte 0
L51EC: .byte 0
L51ED: .byte 0
.byte 0
L51EF: .byte 0
2018-01-20 03:41:20 +00:00
.endproc
;;; ==================================================
2018-01-28 16:08:39 +00:00
L51F0: ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
sta LE6D1,x
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
jsr L7D9C
jsr DESKTOP_COPY_FROM_BUF
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jsr L6E8E
jsr L4904
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect_x1
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L7D5D
sta L5263
stx L5264
sty L5265
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$1F
lda #$00
2018-01-17 15:41:23 +00:00
L523B: sta ($06),y
2017-10-12 15:04:27 +00:00
dey
cpy #$1B
bne L523B
ldy #$23
ldx #$03
L5246: lda L5263,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
bpl L5246
lda #$80
sta L4152
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
jsr L6C19
jsr L6DB1
lda #$00
sta L4152
rts
2017-12-31 20:32:47 +00:00
L5263: .byte 0
L5264: .byte 0
L5265: .byte 0
.byte 0
2018-01-19 07:10:37 +00:00
2018-01-20 03:41:20 +00:00
;;; ==================================================
.proc cmd_view_by_name
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L526D
rts
L526D: dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
cmp #$81
bne L5276
rts
L5276: cmp #$00
bne L527D
jsr L5302
L527D: jsr L52DF
lda #$81
jmp L51F0
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_view_by_date
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L528B
rts
L528B: dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
cmp #$82
bne L5294
rts
L5294: cmp #$00
bne L529B
jsr L5302
L529B: jsr L52DF
lda #$82
jmp L51F0
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_view_by_size
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L52A9
rts
L52A9: dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
cmp #$83
bne L52B2
rts
L52B2: cmp #$00
bne L52B9
jsr L5302
L52B9: jsr L52DF
lda #$83
jmp L51F0
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_view_by_type
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L52C7
rts
L52C7: dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
cmp #$84
bne L52D0
rts
L52D0: cmp #$00
bne L52D7
jsr L5302
L52D7: jsr L52DF
lda #$84
jmp L51F0
2018-01-20 03:41:20 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
L52DF: lda #$00
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267
2017-10-12 15:04:27 +00:00
lda $E25B
sta $E268
lda #$01
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267
2017-10-12 15:04:27 +00:00
rts
2018-01-28 16:08:39 +00:00
L5302: DESKTOP_RELAY_CALL $07, desktop_active_winid
lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-15 05:23:48 +00:00
lda LDD9E
2017-10-12 15:04:27 +00:00
sec
2018-01-05 05:05:54 +00:00
sbc buf3len
2018-01-15 05:23:48 +00:00
sta LDD9E
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-05 05:05:54 +00:00
L5320: cpx buf3len
2017-10-12 15:04:27 +00:00
beq L5334
2018-01-05 05:05:54 +00:00
lda buf3,x
jsr DESKTOP_FREE_SPACE
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta buf3,x
2017-10-12 15:04:27 +00:00
inx
jmp L5320
L5334: jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2017-12-31 20:32:47 +00:00
L533F: .byte 0
2018-01-19 07:10:37 +00:00
2018-01-20 03:41:20 +00:00
;;; ==================================================
.proc cmd_format_disk
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_format_erase
jsr load_dynamic_routine
2018-01-20 05:57:58 +00:00
bmi fail
2017-10-12 15:04:27 +00:00
lda #$04
jsr dynamic_routine_800
2018-01-20 05:57:58 +00:00
bne :+
2017-10-12 15:04:27 +00:00
stx L533F
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
jsr L59A4
2018-01-21 16:37:01 +00:00
: jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-20 05:57:58 +00:00
fail: rts
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_erase_disk
2018-01-20 02:55:15 +00:00
lda #dynamic_routine_format_erase
jsr load_dynamic_routine
2018-01-20 05:57:58 +00:00
bmi done
2017-10-12 15:04:27 +00:00
lda #$05
jsr dynamic_routine_800
2018-01-20 05:57:58 +00:00
bne done
2017-10-12 15:04:27 +00:00
stx L533F
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
jsr L59A4
2018-01-21 16:37:01 +00:00
done: jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_get_info
2018-01-19 05:57:25 +00:00
jsr L8F09
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_get_size
2018-01-19 05:57:25 +00:00
jsr L8F27
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_unlock
2018-01-19 05:57:25 +00:00
jsr L8F0F
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_lock
2018-01-19 05:57:25 +00:00
jsr L8F0C
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2018-01-20 03:41:20 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 03:41:20 +00:00
.proc cmd_rename_icon
2018-01-19 05:57:25 +00:00
jsr L8F12
2017-10-12 15:04:27 +00:00
pha
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
pla
beq L5398
rts
L5398: lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L53B5
ldx #$00
ldy #$00
L53A1: lda selected_file_index,x
2017-10-12 15:04:27 +00:00
cmp #$01
beq L53AC
sta L5428,y
iny
L53AC: inx
cpx selected_file_index
2017-10-12 15:04:27 +00:00
bne L53A1
sty L5427
L53B5: lda #$FF
sta L5426
L53BA: inc L5426
lda L5426
cmp is_file_selected
2017-10-12 15:04:27 +00:00
bne L53D0
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L53CD
jmp L540E
L53CD: jmp L5E78
L53D0: tax
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L5431
bmi L53BA
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
jsr L6FB7
lda L704B
beq L53BA
L53EF: dec L704B
ldx L704B
lda L704C,x
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L5403
sta $D20E
2018-01-28 16:08:39 +00:00
jsr handle_inactive_window_click
2017-10-12 15:04:27 +00:00
L5403: jsr L61DC
lda L704B
bne L53EF
jmp L53BA
L540E: ldx L5427
L5411: lda L5428,x
sta L533F
jsr L59A8
ldx L5427
dec L5427
dex
bpl L5411
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L5426: .byte 0
L5427: .byte 0
L5428: .res 9, 0
2018-01-20 03:41:20 +00:00
L5431: ldx #7
2018-01-13 03:06:55 +00:00
L5433: cmp LEC26,x
2017-10-12 15:04:27 +00:00
beq L543E
dex
bpl L5433
lda #$FF
rts
L543E: inx
txa
rts
2018-01-26 02:22:33 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
;;; ==================================================
;;; Handle keyboard-based icon selection ("highlighting")
.proc cmd_higlight
jmp L544D
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L5444: .byte 0
L5445: .byte 0
L5446: .byte 0
L5447: .byte 0
L5448: .byte 0
L5449: .byte 0
L544A: .byte 0
.byte 0
.byte 0
2018-01-21 22:35:37 +00:00
2018-01-26 02:22:33 +00:00
L544D:
lda #$00
2017-10-12 15:04:27 +00:00
sta $1800
2018-01-21 22:35:37 +00:00
lda $EC25
2017-10-12 15:04:27 +00:00
bne L545A
jmp L54C5
L545A: tax
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bpl L5464
jmp L54C5
2018-01-28 16:08:39 +00:00
L5464: lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$1C
2018-01-17 15:41:23 +00:00
L5479: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E214,y
iny
cpy #$24
bne L5479
ldx #$00
2018-01-05 05:05:54 +00:00
L5485: cpx buf3len
2017-10-12 15:04:27 +00:00
beq L54BD
txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $0D, LE22F
2017-10-12 15:04:27 +00:00
pha
2018-01-15 04:55:54 +00:00
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8893
pla
beq L54B7
pla
pha
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2017-10-12 15:04:27 +00:00
ldx $1800
sta $1801,x
inc $1800
L54B7: pla
tax
inx
jmp L5485
L54BD: lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
L54C5: ldx $1800
ldy #$00
2018-01-05 05:05:54 +00:00
L54CA: lda buf3,y
2017-10-12 15:04:27 +00:00
sta $1801,x
iny
inx
2018-01-05 05:05:54 +00:00
cpy buf3len
2017-10-12 15:04:27 +00:00
bne L54CA
lda $1800
clc
2018-01-05 05:05:54 +00:00
adc buf3len
2017-10-12 15:04:27 +00:00
sta $1800
lda #$00
sta L544A
lda #$FF
ldx #$03
L54EA: sta L5444,x
dex
bpl L54EA
L54F0: ldx L544A
L54F3: lda $1801,x
asl a
tay
lda file_address_table,y
2018-01-17 15:41:23 +00:00
sta $06
lda file_address_table+1,y
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$06
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L5447
beq L5510
bcc L5532
jmp L5547
L5510: dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L5446
beq L551D
bcc L5532
jmp L5547
L551D: dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L5445
beq L552A
bcc L5532
jmp L5547
L552A: dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L5444
bcs L5547
L5532: lda $1801,x
stx L5449
sta L5448
ldy #$03
2018-01-17 15:41:23 +00:00
L553D: lda ($06),y
2018-01-26 02:22:33 +00:00
sta L5444-3,y
2017-10-12 15:04:27 +00:00
iny
cpy #$07
bne L553D
L5547: inx
cpx $1800
bne L54F3
ldx L544A
lda $1801,x
tay
lda L5448
sta $1801,x
ldx L5449
tya
sta $1801,x
lda #$FF
ldx #$03
L5565: sta L5444,x
dex
bpl L5565
inc L544A
ldx L544A
cpx $1800
beq L5579
jmp L54F0
L5579: lda #$00
sta L544A
2018-01-20 18:57:25 +00:00
jsr clear_selection
2017-10-12 15:04:27 +00:00
L5581: jsr L55F0
2018-01-21 00:44:49 +00:00
L5584: jsr get_input
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::key_down
2017-10-12 15:04:27 +00:00
beq L5595
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2017-10-12 15:04:27 +00:00
bne L5584
jmp L55D1
2018-01-30 16:57:36 +00:00
L5595: lda event_params+1
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-12 07:03:53 +00:00
cmp #KEY_RETURN
2017-10-12 15:04:27 +00:00
beq L55D1
2018-01-12 07:03:53 +00:00
cmp #KEY_ESCAPE
2017-10-12 15:04:27 +00:00
beq L55D1
2018-01-12 07:03:53 +00:00
cmp #KEY_LEFT
2017-10-12 15:04:27 +00:00
beq L55BE
2018-01-12 07:03:53 +00:00
cmp #KEY_RIGHT
2017-10-12 15:04:27 +00:00
bne L5584
ldx L544A
inx
cpx $1800
bne L55B5
ldx #$00
L55B5: stx L544A
jsr L562C
jmp L5581
L55BE: ldx L544A
dex
bpl L55C8
ldx $1800
dex
L55C8: stx L544A
jsr L562C
jmp L5581
L55D1: ldx L544A
lda $1801,x
sta selected_file_index
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
sta selected_window_index
2017-10-12 15:04:27 +00:00
lda #$01
sta is_file_selected
2017-10-12 15:04:27 +00:00
rts
L55F0: ldx L544A
lda $1801,x
2018-01-15 04:55:54 +00:00
sta LE22F
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L5614
jsr L56F9
2018-01-15 04:55:54 +00:00
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-15 04:55:54 +00:00
L5614: DESKTOP_RELAY_CALL $02, LE22F
2018-01-31 05:42:26 +00:00
lda getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L562B
2018-01-15 04:55:54 +00:00
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8893
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
L562B: rts
2018-01-15 04:55:54 +00:00
L562C: lda LE22F
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L564A
jsr L56F9
2018-01-15 04:55:54 +00:00
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-15 04:55:54 +00:00
L564A: DESKTOP_RELAY_CALL $0B, LE22F
2018-01-31 05:42:26 +00:00
lda getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L5661
2018-01-15 04:55:54 +00:00
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8893
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
L5661: rts
2018-01-26 02:22:33 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 05:57:58 +00:00
.proc cmd_select_all
2018-01-19 05:57:25 +00:00
lda is_file_selected
2017-10-12 15:04:27 +00:00
beq L566A
2018-01-20 18:57:25 +00:00
jsr clear_selection
2018-01-28 16:08:39 +00:00
L566A: ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L5676
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bpl L5676
rts
2018-01-28 16:08:39 +00:00
L5676: lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-05 05:05:54 +00:00
lda buf3len
2017-10-12 15:04:27 +00:00
bne L5687
jmp L56F0
2018-01-05 05:05:54 +00:00
L5687: ldx buf3len
2017-10-12 15:04:27 +00:00
dex
2018-01-05 05:05:54 +00:00
L568B: lda buf3,x
sta selected_file_index,x
2017-10-12 15:04:27 +00:00
dex
bpl L568B
2018-01-05 05:05:54 +00:00
lda buf3len
sta is_file_selected
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
sta selected_window_index
lda selected_window_index
2017-10-12 15:04:27 +00:00
sta $E22C
beq L56AB
jsr L56F9
L56AB: lda is_file_selected
2017-10-12 15:04:27 +00:00
sta L56F8
dec L56F8
L56B4: ldx L56F8
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
sta $E22B
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda $E22C
beq L56CF
lda $E22B
jsr L8915
L56CF: DESKTOP_RELAY_CALL $02, $E22B
2017-10-12 15:04:27 +00:00
lda $E22C
beq L56E3
lda $E22B
jsr L8893
L56E3: dec L56F8
bpl L56B4
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L56F0
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
L56F0: lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L56F8: .byte 0
2018-01-20 05:57:58 +00:00
.endproc
;;; ==================================================
2018-01-31 05:42:26 +00:00
L56F9: sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jmp L6E8E
2018-01-26 02:22:33 +00:00
;;; ==================================================
;;; Handle keyboard-based window activation
.proc cmd_activate
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L5708
rts
L5708: sta L0800
ldy #$01
ldx #$00
2018-01-13 03:06:55 +00:00
L570F: lda LEC26,x
2017-10-12 15:04:27 +00:00
beq L5720
inx
2018-01-28 16:08:39 +00:00
cpx desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L5721
txa
dex
sta L0800,y
iny
L5720: inx
L5721: cpx #$08
bne L570F
sty L578D
cpy #$01
bne L572D
rts
L572D: lda #$00
sta L578C
2018-01-21 00:44:49 +00:00
L5732: jsr get_input
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::key_down
2017-10-12 15:04:27 +00:00
beq L5743
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2017-10-12 15:04:27 +00:00
bne L5732
jmp L578B
2018-01-30 16:57:36 +00:00
L5743: lda event_params_key
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-12 07:03:53 +00:00
cmp #KEY_RETURN
2017-10-12 15:04:27 +00:00
beq L578B
2018-01-12 07:03:53 +00:00
cmp #KEY_ESCAPE
2017-10-12 15:04:27 +00:00
beq L578B
2018-01-12 07:03:53 +00:00
cmp #KEY_LEFT
2017-10-12 15:04:27 +00:00
beq L5772
2018-01-12 07:03:53 +00:00
cmp #KEY_RIGHT
2017-10-12 15:04:27 +00:00
bne L5732
ldx L578C
inx
cpx L578D
bne L5763
ldx #$00
L5763: stx L578C
lda L0800,x
sta $D20E
2018-01-28 16:08:39 +00:00
jsr handle_inactive_window_click
2017-10-12 15:04:27 +00:00
jmp L5732
L5772: ldx L578C
dex
bpl L577C
ldx L578D
dex
L577C: stx L578C
lda L0800,x
sta $D20E
2018-01-28 16:08:39 +00:00
jsr handle_inactive_window_click
2017-10-12 15:04:27 +00:00
jmp L5732
L578B: rts
2017-12-31 20:32:47 +00:00
L578C: .byte 0
L578D: .byte 0
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
.endproc
;;; ==================================================
;;;Initiate keyboard-based resizing
.proc cmd_resize
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::KeyboardMouse
2018-01-26 02:22:33 +00:00
jmp handle_resize_click
.endproc
;;; ==================================================
;;; Initiate keyboard-based window moving
.proc cmd_move
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::KeyboardMouse
2018-01-26 02:22:33 +00:00
jmp handle_title_click
.endproc
;;; ==================================================
;;; Keyboard-based scrolling of window contents
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
.proc cmd_scroll
jsr L5803
loop: jsr get_input
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2018-01-26 02:22:33 +00:00
beq done
2018-01-29 05:18:00 +00:00
cmp #MGTK::key_down
2018-01-26 02:22:33 +00:00
bne loop
2018-01-30 16:57:36 +00:00
lda event_params_key
2018-01-12 07:03:53 +00:00
cmp #KEY_RETURN
2018-01-26 02:22:33 +00:00
beq done
2018-01-12 07:03:53 +00:00
cmp #KEY_ESCAPE
2018-01-26 02:22:33 +00:00
bne :+
done: lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
rts
2018-01-26 02:22:33 +00:00
;; Horizontal ok?
: bit L585D
bmi :+
jmp vertical
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
: cmp #KEY_RIGHT
bne :+
2018-01-26 02:28:08 +00:00
jsr scroll_right
2018-01-26 02:22:33 +00:00
jmp loop
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
: cmp #KEY_LEFT
bne vertical
2018-01-26 02:28:08 +00:00
jsr scroll_left
2018-01-26 02:22:33 +00:00
jmp loop
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
;; Vertical ok?
vertical:
bit L585E
bmi :+
jmp loop
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
: cmp #KEY_DOWN
bne :+
2018-01-26 02:28:08 +00:00
jsr scroll_down
2018-01-26 02:22:33 +00:00
jmp loop
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
: cmp #KEY_UP
bne loop
2018-01-26 02:28:08 +00:00
jsr scroll_up
2018-01-26 02:22:33 +00:00
jmp loop
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
L5803: lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
sta L5B1B
jsr L58C3
sta L585F
stx L5860
sty L585D
jsr L58E2
sta L5861
stx L5862
sty L585E
rts
2018-01-26 02:28:08 +00:00
scroll_right: ; elevator right / contents left
lda L585F
2017-10-12 15:04:27 +00:00
ldx L5860
jsr L5863
sta L585F
rts
2018-01-26 02:28:08 +00:00
scroll_left: ; elevator left / contents right
lda L585F
2017-10-12 15:04:27 +00:00
jsr L587E
sta L585F
rts
2018-01-26 02:28:08 +00:00
scroll_down: ; elevator down / contents up
lda L5861
2017-10-12 15:04:27 +00:00
ldx L5862
jsr L5893
sta L5861
rts
2018-01-26 02:28:08 +00:00
scroll_up: ; elevator up / contents down
lda L5861
2017-10-12 15:04:27 +00:00
jsr L58AE
sta L5861
rts
2018-01-26 02:28:08 +00:00
L585D: .byte 0 ; can scroll horiz?
L585E: .byte 0 ; can scroll vert?
2017-12-31 20:32:47 +00:00
L585F: .byte 0
L5860: .byte 0
L5861: .byte 0
L5862: .byte 0
2018-01-26 02:22:33 +00:00
2017-10-12 15:04:27 +00:00
L5863: stx L587D
cmp L587D
beq L587C
sta $D20D
inc $D20D
lda #$02
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
jsr L5C54
lda $D20D
L587C: rts
2017-12-31 20:32:47 +00:00
L587D: .byte 0
2017-10-12 15:04:27 +00:00
L587E: beq L5891
sta $D20D
dec $D20D
lda #$02
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
jsr L5C54
lda $D20D
L5891: rts
2017-12-31 20:32:47 +00:00
.byte 0
2017-10-12 15:04:27 +00:00
L5893: stx L58AD
cmp L58AD
beq L58AC
sta $D20D
inc $D20D
lda #$01
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
jsr L5C54
lda $D20D
L58AC: rts
2017-12-31 20:32:47 +00:00
L58AD: .byte 0
2017-10-12 15:04:27 +00:00
L58AE: beq L58C1
sta $D20D
dec $D20D
lda #$01
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
jsr L5C54
lda $D20D
L58C1: rts
2017-12-31 20:32:47 +00:00
.byte 0
2018-01-28 16:08:39 +00:00
L58C3: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$06
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
pha
ldy #$04
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$01
clc
ror a
ror a
tay
pla
rts
2018-01-28 16:08:39 +00:00
L58E2: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$08
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
pha
ldy #$05
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$01
clc
ror a
ror a
tay
pla
rts
2018-01-19 07:10:37 +00:00
;;; ==================================================
2018-01-20 05:57:58 +00:00
.proc cmd_check_drives
2018-01-19 05:57:25 +00:00
lda #$00
2017-10-12 15:04:27 +00:00
sta L599F
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-19 05:57:25 +00:00
jsr cmd_close_all
2018-01-20 18:57:25 +00:00
jsr clear_selection
2018-01-05 05:05:54 +00:00
ldx buf3len
2017-10-12 15:04:27 +00:00
dex
2018-01-05 05:05:54 +00:00
L5916: lda buf3,x
2017-10-12 15:04:27 +00:00
cmp $EBFB
beq L5942
txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta buf3,x
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $04, LE22F
lda LE22F
jsr DESKTOP_FREE_SPACE
2018-01-05 05:05:54 +00:00
dec buf3len
2018-01-15 05:23:48 +00:00
dec LDD9E
2017-10-12 15:04:27 +00:00
pla
tax
L5942: dex
bpl L5916
ldy #$00
sty L599E
L594A: ldy L599E
2018-01-05 05:05:54 +00:00
inc buf3len
2018-01-15 05:23:48 +00:00
inc LDD9E
2017-10-12 15:04:27 +00:00
lda #$00
sta $E1A0,y
2018-01-15 04:55:54 +00:00
lda DEVLST,y
jsr get_device_info
2017-10-12 15:04:27 +00:00
cmp #$57
bne L5967
lda #$F9
sta L599F
L5967: inc L599E
lda L599E
2018-01-15 04:55:54 +00:00
cmp DEVCNT
2017-10-12 15:04:27 +00:00
beq L594A
bcc L594A
ldx #$00
2018-01-05 05:05:54 +00:00
L5976: cpx buf3len
2017-10-12 15:04:27 +00:00
bne L5986
lda L599F
beq L5983
jsr DESKTOP_SHOW_ALERT0
L5983: jmp DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
L5986: txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2017-10-12 15:04:27 +00:00
cmp $EBFB
beq L5998
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
ldy #$01
2017-12-31 02:02:15 +00:00
jsr DESKTOP_RELAY
2017-10-12 15:04:27 +00:00
L5998: pla
tax
inx
jmp L5976
2018-01-20 05:57:58 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L599E: .byte 0
L599F: .byte 0
2017-10-12 15:04:27 +00:00
L59A0: lda #$00
beq L59AA
L59A4: lda #$80
bne L59AA
L59A8: lda #$C0
L59AA: sta L5AD0
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
bit L5AD0
bpl L59EA
bvc L59D2
lda L533F
ldy #$0F
L59C1: cmp $E1A0,y
beq L59C9
dey
bpl L59C1
L59C9: sty L5AC6
sty $E25B
jmp L59F3
2018-01-15 04:55:54 +00:00
L59D2: ldy DEVCNT
2017-10-12 15:04:27 +00:00
lda L533F
2018-01-15 04:55:54 +00:00
L59D8: cmp DEVLST,y
2017-10-12 15:04:27 +00:00
beq L59E1
dey
bpl L59D8
iny
L59E1: sty L5AC6
sty $E25B
jmp L59F3
L59EA: lda $E25B
sec
sbc #$03
sta $E25B
L59F3: ldy $E25B
lda $E1A0,y
bne L59FE
jmp L5A4C
2018-01-21 03:02:34 +00:00
L59FE: jsr file_address_lookup
2017-10-12 15:04:27 +00:00
clc
adc #$09
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$00
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L5A10: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $1F00,y
dey
bpl L5A10
dec $1F00
lda #$2F
sta $1F01
lda #$00
ldx #$1F
ldy $1F00
jsr L6FB7
lda L704B
beq L5A4C
L5A2F: ldx L704B
beq L5A4C
dex
lda L704C,x
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L5A43
sta $D20E
2018-01-28 16:08:39 +00:00
jsr handle_inactive_window_click
2017-10-12 15:04:27 +00:00
L5A43: jsr L61DC
dec L704B
jmp L5A2F
2018-01-21 16:37:01 +00:00
L5A4C: jsr redraw_windows_and_desktop
2018-01-20 18:57:25 +00:00
jsr clear_selection
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
lda $E25B
tay
pha
lda $E1A0,y
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
beq L5A7F
jsr L8AF4
2018-01-15 05:23:48 +00:00
dec LDD9E
2018-01-15 04:55:54 +00:00
lda LE22F
jsr DESKTOP_FREE_SPACE
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $04, LE22F
2018-01-05 05:05:54 +00:00
L5A7F: lda buf3len
2017-10-12 15:04:27 +00:00
sta L5AC6
2018-01-05 05:05:54 +00:00
inc buf3len
2018-01-15 05:23:48 +00:00
inc LDD9E
2017-10-12 15:04:27 +00:00
pla
tay
2018-01-15 04:55:54 +00:00
lda DEVLST,y
jsr get_device_info
2017-10-12 15:04:27 +00:00
bit L5AD0
bmi L5AA9
and #$FF
beq L5AA9
cmp #$2F
beq L5AA9
pha
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
pla
jsr DESKTOP_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
rts
2018-01-05 05:05:54 +00:00
L5AA9: lda buf3len
2017-10-12 15:04:27 +00:00
cmp L5AC6
beq L5AC0
2018-01-05 05:05:54 +00:00
ldx buf3len
2017-10-12 15:04:27 +00:00
dex
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
ldy #$01
2017-12-31 02:02:15 +00:00
jsr DESKTOP_RELAY
L5AC0: jsr DESKTOP_COPY_FROM_BUF
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L5AC6: .res 10, 0
L5AD0: .byte 0
2018-01-19 07:10:37 +00:00
2018-01-20 05:57:58 +00:00
;;; ==================================================
.proc cmd_startup_item
2018-01-19 05:57:25 +00:00
ldx $E25B
2017-10-12 15:04:27 +00:00
dex
txa
asl a
asl a
asl a
clc
2018-01-13 03:06:55 +00:00
adc #6
2017-10-12 15:04:27 +00:00
tax
2018-01-13 03:06:55 +00:00
lda s00,x
2017-10-12 15:04:27 +00:00
sec
sbc #$30
clc
2018-01-20 05:57:58 +00:00
adc #>$C000 ; compute $Cn00
sta reset_and_invoke_target+1
lda #<$0000
sta reset_and_invoke_target
;; fall through
.endproc
2018-01-19 07:10:37 +00:00
;; also invoked by launcher code
2018-01-20 05:57:58 +00:00
.proc reset_and_invoke
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
lda ROMIN2
2017-12-31 02:02:15 +00:00
jsr SETVID
jsr SETKBD
jsr INIT
jsr HOME
2017-12-31 20:04:22 +00:00
sta TXTSET
sta LOWSCR
sta LORES
sta MIXCLR
sta DHIRESOFF
sta CLRALTCHAR
sta CLR80VID
sta CLR80COL
2018-01-05 04:27:15 +00:00
2018-01-19 07:10:37 +00:00
;; also used by launcher code
2018-01-20 05:57:58 +00:00
target := *+1
2018-01-17 03:36:54 +00:00
jmp dummy0000 ; self-modified
2018-01-20 05:57:58 +00:00
.endproc
reset_and_invoke_target := reset_and_invoke::target
2018-01-05 04:27:15 +00:00
2018-01-19 07:10:37 +00:00
;;; ==================================================
2017-12-31 20:32:47 +00:00
L5B1B: .byte 0
2018-01-26 02:22:33 +00:00
handle_client_click:
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
sta L5B1B
ldx #$03
L5B31: lda $EBFD,x
2018-01-30 16:57:36 +00:00
sta event_params_coords,x
2017-10-12 15:04:27 +00:00
dex
bpl L5B31
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::FindControl, event_params_coords
2017-10-12 15:04:27 +00:00
lda $D20D
bne L5B4B
jmp L5CB7
2018-01-28 16:08:39 +00:00
L5B4B: bit double_click_flag
2017-10-12 15:04:27 +00:00
bmi L5B53
jmp L5C26
L5B53: cmp #$03
bne L5B58
rts
L5B58: cmp #$01
bne L5BC1
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$05
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$01
bne L5B71
jmp L5C26
L5B71: jsr L5803
lda $D20E
cmp #$05
bne L5B81
jsr L5C31
jmp L5C26
L5B81: cmp #$01
bne L5B92
2018-01-26 02:28:08 +00:00
L5B85: jsr scroll_up
2017-10-12 15:04:27 +00:00
lda #$01
jsr L5C89
bpl L5B85
jmp L5C26
L5B92: cmp #$02
bne L5BA3
2018-01-26 02:28:08 +00:00
L5B96: jsr scroll_down
2017-10-12 15:04:27 +00:00
lda #$02
jsr L5C89
bpl L5B96
jmp L5C26
L5BA3: cmp #$04
beq L5BB4
L5BA7: jsr L638C
lda #$03
jsr L5C89
bpl L5BA7
jmp L5C26
L5BB4: jsr L63EC
lda #$04
jsr L5C89
bpl L5BB4
jmp L5C26
2018-01-28 16:08:39 +00:00
L5BC1: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$04
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$01
bne L5BD6
jmp L5C26
L5BD6: jsr L5803
lda $D20E
cmp #$05
bne L5BE6
jsr L5C31
jmp L5C26
L5BE6: cmp #$01
bne L5BF7
2018-01-26 02:28:08 +00:00
L5BEA: jsr scroll_left
2017-10-12 15:04:27 +00:00
lda #$01
jsr L5C89
bpl L5BEA
jmp L5C26
L5BF7: cmp #$02
bne L5C08
2018-01-26 02:28:08 +00:00
L5BFB: jsr scroll_right
2017-10-12 15:04:27 +00:00
lda #$02
jsr L5C89
bpl L5BFB
jmp L5C26
L5C08: cmp #$04
beq L5C19
L5C0C: jsr L6451
lda #$03
jsr L5C89
bpl L5C0C
jmp L5C26
L5C19: jsr L64B0
lda #$04
jsr L5C89
bpl L5C19
jmp L5C26
L5C26: jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
L5C31: lda $D20D
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::TrackThumb, event_params
2017-10-12 15:04:27 +00:00
lda $D20E
bne L5C46
rts
L5C46: jsr L5C54
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
L5C54: lda $D20D
2018-01-30 16:57:36 +00:00
sta event_params+1
MGTK_RELAY_CALL MGTK::UpdateThumb, event_params
2017-10-12 15:04:27 +00:00
jsr L6523
jsr L84D1
bit L5B1B
bmi L5C71
jsr L6E6E
2018-01-28 16:08:39 +00:00
L5C71: lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect_x1
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
jmp L6C19
L5C89: sta L5CB6
jsr L48F0
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2017-10-12 15:04:27 +00:00
beq L5C99
L5C96: lda #$FF
rts
2018-01-30 16:57:36 +00:00
L5C99: MGTK_RELAY_CALL MGTK::FindControl, event_params_coords
2018-01-12 07:15:04 +00:00
lda query_client_params_part
2017-10-12 15:04:27 +00:00
beq L5C96
cmp #$03
beq L5C96
lda $D20E
cmp L5CB6
bne L5C96
lda #$00
rts
2017-12-31 20:32:47 +00:00
L5CB6: .byte 0
2017-10-12 15:04:27 +00:00
L5CB7: bit L5B1B
bpl L5CBF
2018-01-20 18:57:25 +00:00
jmp clear_selection
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
L5CBF: lda desktop_active_winid
2017-10-12 15:04:27 +00:00
sta $D20E
2018-01-30 16:57:36 +00:00
DESKTOP_RELAY_CALL $09, event_params_coords
2018-01-12 07:15:04 +00:00
lda query_client_params_part
2017-10-12 15:04:27 +00:00
bne L5CDA
jsr L5F13
jmp L5DEC
2017-12-31 20:32:47 +00:00
L5CD9: .byte 0
2017-10-12 15:04:27 +00:00
L5CDA: sta L5CD9
ldx is_file_selected
2017-10-12 15:04:27 +00:00
beq L5CFB
dex
lda L5CD9
L5CE6: cmp selected_file_index,x
2017-10-12 15:04:27 +00:00
beq L5CF0
dex
bpl L5CE6
bmi L5CFB
2018-01-28 16:08:39 +00:00
L5CF0: bit double_click_flag
2017-10-12 15:04:27 +00:00
bmi L5CF8
2018-01-21 01:16:31 +00:00
jmp L5DFC
2017-10-12 15:04:27 +00:00
L5CF8: jmp L5D55
2017-12-31 20:04:22 +00:00
L5CFB: bit BUTN0
2017-10-12 15:04:27 +00:00
bpl L5D08
lda selected_window_index
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L5D0B
2018-01-20 18:57:25 +00:00
L5D08: jsr clear_selection
L5D0B: ldx is_file_selected
2017-10-12 15:04:27 +00:00
lda L5CD9
sta selected_file_index,x
inc is_file_selected
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
sta selected_window_index
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
lda L5CD9
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
jsr L6E8E
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
lda L5CD9
jsr L8893
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-28 16:08:39 +00:00
bit double_click_flag
2017-10-12 15:04:27 +00:00
bmi L5D55
2018-01-21 01:16:31 +00:00
jmp L5DFC
2017-10-12 15:04:27 +00:00
L5D55: lda L5CD9
2018-01-24 23:39:12 +00:00
sta LEBFC
DESKTOP_RELAY_CALL $0A, LEBFC
2017-10-12 15:04:27 +00:00
tax
2018-01-24 23:39:12 +00:00
lda LEBFC
2017-10-12 15:04:27 +00:00
beq L5DA6
jsr L8F00
cmp #$FF
bne L5D77
jsr L5DEC
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
L5D77: lda LEBFC
2017-10-12 15:04:27 +00:00
cmp $EBFB
bne L5D8E
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L6F0D
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L5E78
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
L5D8E: lda LEBFC
2017-10-12 15:04:27 +00:00
bmi L5D99
jsr L6A3F
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
L5D99: and #$7F
pha
jsr L6F0D
pla
jsr L5E78
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
L5DA6: cpx #$02
bne L5DAD
jmp L5DEC
L5DAD: cpx #$FF
beq L5DF7
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6E52
jsr L6E8E
ldx is_file_selected
2017-10-12 15:04:27 +00:00
dex
L5DC4: txa
pha
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
sta $E22E
DESKTOP_RELAY_CALL $03, $E22E
2017-10-12 15:04:27 +00:00
pla
tax
dex
bpl L5DC4
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6DB1
jsr L6E6E
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
L5DEC: jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
L5DF7: ldx $E256
txs
rts
2018-01-21 00:44:49 +00:00
L5DFC: lda L5CD9 ; after a double-click (on file or folder)
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-26 02:22:33 +00:00
ldy #2 ; byte type icon offset
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-26 02:22:33 +00:00
and #$70 ; bits 4-6
cmp #$10 ; $10 = system
2017-10-12 15:04:27 +00:00
beq L5E28
2018-01-26 02:22:33 +00:00
cmp #$20 ; $20 = binary
2017-10-12 15:04:27 +00:00
beq L5E28
2018-01-26 02:22:33 +00:00
cmp #$30 ; $30 = basic
2017-10-12 15:04:27 +00:00
beq L5E28
2018-01-26 02:22:33 +00:00
cmp #$00 ; $00 = directory
2017-10-12 15:04:27 +00:00
bne L5E27
2018-01-26 02:22:33 +00:00
lda L5CD9 ; handle directory
2017-10-12 15:04:27 +00:00
jsr L6A8A
bmi L5E27
jmp L5DEC
L5E27: rts
L5E28: sta L5E77
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L5E3A: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $D355,y
dey
bpl L5E3A
lda L5CD9
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$09
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
clc
adc #$09
tay
dex
dey
2018-01-17 15:41:23 +00:00
L5E57: lda ($06),y
2018-01-24 05:52:53 +00:00
sta LD343+1,x
2017-10-12 15:04:27 +00:00
dey
dex
bne L5E57
ldy #$09
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
dex
dex
stx $D345
lda L5E77
cmp #$20
bcc L5E74
lda L5E77
2018-01-21 00:44:49 +00:00
L5E74: jmp launch_file ; when double-clicked
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L5E77: .byte 0
2017-10-12 15:04:27 +00:00
L5E78: sta L5F0A
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2018-01-20 18:57:25 +00:00
jsr clear_selection
2017-10-12 15:04:27 +00:00
lda L5F0A
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L5E8F
sta $D20E
2018-01-28 16:08:39 +00:00
jsr handle_inactive_window_click
L5E8F: lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L4904
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect_x1
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2017-10-12 15:04:27 +00:00
pha
jsr L7345
lda L5F0A
tax
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bmi L5EBC
jsr L5302
2018-01-28 16:08:39 +00:00
L5EBC: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L5ECB: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E1B0,y
dey
bpl L5ECB
pla
jsr L7054
2018-01-20 03:41:20 +00:00
jsr cmd_view_by_icon::L5106
jsr DESKTOP_COPY_FROM_BUF
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jsr L78EF
lda #$00
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
sta $E6D0,x
lda #$01
sta $E25B
jsr L52DF
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L5F0A: .byte 0
L5F0B: .byte 0
.byte 0
.byte 0
.byte 0
L5F0F: .byte 0
.byte 0
.byte 0
.byte 0
2018-01-24 04:11:38 +00:00
L5F13: lda #<$D206
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 04:11:38 +00:00
lda #>$D206
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
jsr L60D5
ldx #$03
2018-01-30 16:57:36 +00:00
L5F20: lda event_params_coords,x
2017-10-12 15:04:27 +00:00
sta L5F0B,x
sta L5F0F,x
dex
bpl L5F20
jsr L48F0
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2017-10-12 15:04:27 +00:00
beq L5F3F
2017-12-31 20:04:22 +00:00
bit BUTN0
2017-10-12 15:04:27 +00:00
bmi L5F3E
2018-01-20 18:57:25 +00:00
jsr clear_selection
2017-10-12 15:04:27 +00:00
L5F3E: rts
2018-01-20 18:57:25 +00:00
L5F3F: jsr clear_selection
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
jsr L6E8E
ldx #$03
L5F50: lda L5F0B,x
2018-01-21 03:33:15 +00:00
sta rect_E230,x
2017-10-12 15:04:27 +00:00
lda L5F0F,x
sta $E234,x
dex
bpl L5F50
jsr L48FA
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
L5F6B: jsr L48F0
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2017-10-12 15:04:27 +00:00
beq L5FC5
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-05 05:05:54 +00:00
L5F80: cpx buf3len
2017-10-12 15:04:27 +00:00
bne L5F88
2018-01-30 16:57:36 +00:00
jmp reset_grafport3
2017-10-12 15:04:27 +00:00
L5F88: txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $0D, LE22F
2017-10-12 15:04:27 +00:00
beq L5FB9
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
ldx is_file_selected
inc is_file_selected
2018-01-15 04:55:54 +00:00
lda LE22F
sta selected_file_index,x
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
sta selected_window_index
2018-01-15 04:55:54 +00:00
L5FB9: lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8893
pla
tax
inx
jmp L5F80
L5FC5: jsr L60D5
2018-01-30 16:57:36 +00:00
lda event_params_xcoord
2017-10-12 15:04:27 +00:00
sec
sbc L60CF
sta L60CB
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc L60D0
sta L60CC
2018-01-30 16:57:36 +00:00
lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sec
sbc L60D1
sta L60CD
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc L60D2
sta L60CE
lda L60CC
bpl L5FFE
lda L60CB
eor #$FF
sta L60CB
inc L60CB
L5FFE: lda L60CE
bpl L600E
lda L60CD
eor #$FF
sta L60CD
inc L60CD
L600E: lda L60CB
cmp #$05
bcs L601F
lda L60CD
cmp #$05
bcs L601F
jmp L5F6B
2018-01-29 05:18:00 +00:00
L601F: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
ldx #$03
2018-01-30 16:57:36 +00:00
L602A: lda event_params_coords,x
2017-10-12 15:04:27 +00:00
sta L60CF,x
dex
bpl L602A
2018-01-30 16:57:36 +00:00
lda event_params_xcoord
2017-10-12 15:04:27 +00:00
cmp $E234
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc $E235
bpl L6068
2018-01-30 16:57:36 +00:00
lda event_params_xcoord
2018-01-21 03:33:15 +00:00
cmp rect_E230
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc $E231
bmi L6054
bit L60D3
bpl L6068
2018-01-30 16:57:36 +00:00
L6054: lda event_params_xcoord
2018-01-21 03:33:15 +00:00
sta rect_E230
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sta $E231
lda #$80
sta L60D3
jmp L6079
2018-01-30 16:57:36 +00:00
L6068: lda event_params_xcoord
2017-10-12 15:04:27 +00:00
sta $E234
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sta $E235
lda #$00
sta L60D3
2018-01-30 16:57:36 +00:00
L6079: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
cmp $E236
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc $E237
bpl L60AE
2018-01-30 16:57:36 +00:00
lda event_params_ycoord
2017-10-12 15:04:27 +00:00
cmp $E232
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc $E233
bmi L609A
bit L60D4
bpl L60AE
2018-01-30 16:57:36 +00:00
L609A: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sta $E232
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sta $E233
lda #$80
sta L60D4
jmp L60BF
2018-01-30 16:57:36 +00:00
L60AE: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sta $E236
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sta $E237
lda #$00
sta L60D4
2018-01-29 05:18:00 +00:00
L60BF: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
jmp L5F6B
2017-12-31 20:32:47 +00:00
L60CB: .byte 0
L60CC: .byte 0
L60CD: .byte 0
L60CE: .byte 0
L60CF: .byte 0
L60D0: .byte 0
L60D1: .byte 0
L60D2: .byte 0
L60D3: .byte 0
L60D4: .byte 0
2018-01-11 06:31:02 +00:00
L60D5: jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
jmp L8921
2018-01-26 02:22:33 +00:00
handle_title_click:
jmp L60DE
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
L60DE: lda desktop_active_winid
2018-01-30 16:57:36 +00:00
sta event_params
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrontWindow, desktop_active_winid
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L8855
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::DragWindow, event_params
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$16
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$19
bcs L6112
lda #$19
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
L6112: ldy #$14
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
sbc L8830
sta L6197
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sbc L8831
sta L6198
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
sbc L8832
sta L6199
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sbc L8833
sta L619A
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
beq L6143
2017-12-31 02:02:15 +00:00
rts
2017-10-12 15:04:27 +00:00
2018-01-28 16:08:39 +00:00
L6143: lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-05 05:05:54 +00:00
L614E: cpx buf3len
2017-10-12 15:04:27 +00:00
bne L6161
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
jmp L6196
L6161: txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc L6197
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc L6198
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc L6199
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc L619A
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
pla
tax
inx
jmp L614E
L6196: rts
2017-12-31 20:32:47 +00:00
L6197: .byte 0
L6198: .byte 0
L6199: .byte 0
L619A: .byte 0
2018-01-26 02:22:33 +00:00
handle_resize_click:
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::GrowWindow, event_params
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
jsr L6E52
jsr L6DB1
jsr L6E6E
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-30 16:57:36 +00:00
jmp reset_grafport3
2017-10-12 15:04:27 +00:00
2018-01-26 02:22:33 +00:00
handle_close_click:
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::TrackGoAway, trackgoaway_params
lda trackgoaway_params::goaway
2017-10-12 15:04:27 +00:00
bne L61DC
rts
2018-01-28 16:08:39 +00:00
L61DC: lda desktop_active_winid
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-20 18:57:25 +00:00
jsr clear_selection
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bmi L6215
2018-01-15 05:23:48 +00:00
lda LDD9E
2017-10-12 15:04:27 +00:00
sec
2018-01-05 05:05:54 +00:00
sbc buf3len
2018-01-15 05:23:48 +00:00
sta LDD9E
2018-01-28 16:08:39 +00:00
DESKTOP_RELAY_CALL $07, desktop_active_winid
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-05 05:05:54 +00:00
L6206: cpx buf3len
2017-10-12 15:04:27 +00:00
beq L6215
2018-01-05 05:05:54 +00:00
lda buf3,x
jsr DESKTOP_FREE_SPACE
2017-10-12 15:04:27 +00:00
inx
jmp L6206
L6215: dec $EC2E
ldx #$00
txa
2018-01-05 05:05:54 +00:00
L621B: sta buf3,x
cpx buf3len
2017-10-12 15:04:27 +00:00
beq L6227
inx
jmp L621B
2018-01-05 05:05:54 +00:00
L6227: sta buf3len
jsr DESKTOP_COPY_FROM_BUF
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, desktop_active_winid
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2018-01-15 04:55:54 +00:00
sta LE22F
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
beq L6276
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
sta selected_window_index
2017-10-12 15:04:27 +00:00
jsr L8997
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
lda #$01
sta is_file_selected
2018-01-15 04:55:54 +00:00
lda LE22F
sta selected_file_index
2018-01-28 16:08:39 +00:00
L6276: ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2017-10-12 15:04:27 +00:00
jsr L7345
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2017-10-12 15:04:27 +00:00
inx
jsr L8B5C
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
lda #$00
2018-01-13 03:06:55 +00:00
sta LEC26,x
2018-01-12 18:01:28 +00:00
sta LE6D1,x
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrontWindow, desktop_active_winid
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
lda #$00
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267
2017-10-12 15:04:27 +00:00
jsr L66A2
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
L62BC: cmp #$01
bcc L62C2
bne L62C5
L62C2: lda #$00
rts
L62C5: sta L638B
stx L6386
sty L638A
cmp L6386
bcc L62D5
tya
rts
L62D5: lda #$00
sta L6385
sta L6389
clc
ror L6386
ror L6385
clc
ror L638A
ror L6389
lda #$00
sta L6383
sta L6387
sta L6384
sta L6388
L62F9: lda L6384
cmp L638B
beq L630F
bcc L6309
jsr L6319
jmp L62F9
L6309: jsr L634E
jmp L62F9
L630F: lda L6388
cmp #$01
bcs L6318
lda #$01
L6318: rts
L6319: lda L6383
sec
sbc L6385
sta L6383
lda L6384
sbc L6386
sta L6384
lda L6387
sec
sbc L6389
sta L6387
lda L6388
sbc L638A
sta L6388
clc
ror L6386
ror L6385
clc
ror L638A
ror L6389
rts
L634E: lda L6383
clc
adc L6385
sta L6383
lda L6384
adc L6386
sta L6384
2017-12-31 02:02:15 +00:00
lda L6387
2017-10-12 15:04:27 +00:00
clc
adc L6389
sta L6387
lda L6388
adc L638A
sta L6388
clc
ror L6386
ror L6385
clc
ror L638A
ror L6389
rts
2017-12-31 20:32:47 +00:00
L6383: .byte 0
L6384: .byte 0
L6385: .byte 0
L6386: .byte 0
L6387: .byte 0
L6388: .byte 0
L6389: .byte 0
L638A: .byte 0
L638B: .byte 0
2017-10-12 15:04:27 +00:00
L638C: jsr L650F
sty L63E9
jsr L644C
sta L63E8
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
sec
sbc L63E8
sta L63EA
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
sbc #$00
sta L63EB
lda L63EA
cmp L7B61
lda L63EB
sbc L7B62
bmi L63C1
lda L63EA
ldx L63EB
jmp L63C7
L63C1: lda L7B61
ldx L7B62
2018-01-30 16:57:36 +00:00
L63C7: sta grafport2::cliprect_y1
stx grafport2::cliprect_y1+1
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
clc
adc L63E9
2018-01-30 16:57:36 +00:00
sta grafport2::height
lda grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-30 16:57:36 +00:00
sta grafport2::height+1
2017-10-12 15:04:27 +00:00
jsr L653E
jsr L6DB1
jmp L6556
2017-12-31 20:32:47 +00:00
L63E8: .byte 0
L63E9: .byte 0
L63EA: .byte 0
L63EB: .byte 0
2017-10-12 15:04:27 +00:00
L63EC: jsr L650F
sty L6449
jsr L644C
sta L6448
2018-01-30 16:57:36 +00:00
lda grafport2::height
2017-10-12 15:04:27 +00:00
clc
adc L6448
sta L644A
2018-01-30 16:57:36 +00:00
lda grafport2::height+1
2017-10-12 15:04:27 +00:00
adc #$00
sta L644B
lda L644A
cmp L7B65
lda L644B
sbc L7B66
bpl L6421
lda L644A
ldx L644B
jmp L6427
L6421: lda L7B65
ldx L7B66
2018-01-30 16:57:36 +00:00
L6427: sta grafport2::height
stx grafport2::height+1
lda grafport2::height
2017-10-12 15:04:27 +00:00
sec
sbc L6449
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_y1
lda grafport2::height+1
2017-10-12 15:04:27 +00:00
sbc #$00
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
jsr L653E
jsr L6DB1
jmp L6556
2017-12-31 20:32:47 +00:00
L6448: .byte 0
L6449: .byte 0
L644A: .byte 0
L644B: .byte 0
2017-10-12 15:04:27 +00:00
L644C: tya
sec
sbc #$0E
rts
L6451: jsr L650F
sta L64AC
stx L64AD
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
sec
sbc L64AC
sta L64AE
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
sbc L64AD
sta L64AF
lda L64AE
cmp L7B5F
lda L64AF
sbc L7B60
bmi L6484
lda L64AE
ldx L64AF
jmp L648A
L6484: lda L7B5F
ldx L7B60
2018-01-30 16:57:36 +00:00
L648A: sta grafport2::cliprect_x1
stx grafport2::cliprect_x1+1
lda grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
clc
adc L64AC
2018-01-30 16:57:36 +00:00
sta grafport2::width
lda grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
adc L64AD
2018-01-30 16:57:36 +00:00
sta grafport2::width+1
2017-10-12 15:04:27 +00:00
jsr L653E
jsr L6DB1
jmp L6556
2017-12-31 20:32:47 +00:00
L64AC: .byte 0
L64AD: .byte 0
L64AE: .byte 0
L64AF: .byte 0
2017-10-12 15:04:27 +00:00
L64B0: jsr L650F
sta L650B
stx L650C
2018-01-30 16:57:36 +00:00
lda grafport2::width
2017-10-12 15:04:27 +00:00
clc
adc L650B
sta L650D
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
2017-10-12 15:04:27 +00:00
adc L650C
sta L650E
lda L650D
cmp L7B63
lda L650E
sbc L7B64
bpl L64E3
lda L650D
ldx L650E
jmp L64E9
L64E3: lda L7B63
ldx L7B64
2018-01-30 16:57:36 +00:00
L64E9: sta grafport2::width
stx grafport2::width+1
lda grafport2::width
2017-10-12 15:04:27 +00:00
sec
sbc L650B
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_x1
lda grafport2::width+1
2017-10-12 15:04:27 +00:00
sbc L650C
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
jsr L653E
jsr L6DB1
jmp L6556
2017-12-31 20:32:47 +00:00
L650B: .byte 0
L650C: .byte 0
L650D: .byte 0
L650E: .byte 0
2017-10-12 15:04:27 +00:00
L650F: bit L5B1B
bmi L6517
jsr L6E52
L6517: jsr L6523
jsr L7B6B
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jmp L7D5D
2018-01-28 16:08:39 +00:00
L6523: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2017-10-12 15:04:27 +00:00
clc
adc #$14
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$00
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$25
2018-01-17 15:41:23 +00:00
L6535: lda ($06),y
2018-01-30 16:57:36 +00:00
sta grafport2,y
2017-10-12 15:04:27 +00:00
dey
bpl L6535
rts
2018-01-28 16:08:39 +00:00
L653E: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$23
ldx #$07
2018-01-30 16:57:36 +00:00
L654C: lda grafport2::cliprect_x1,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
bpl L654C
rts
L6556: bit L5B1B
bmi L655E
jsr L6E6E
2018-01-30 16:57:36 +00:00
L655E: MGTK_RELAY_CALL MGTK::PaintRect, grafport2::cliprect_x1
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
jmp L6C19
2018-01-28 16:08:39 +00:00
L656D: lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L7D5D
sta L6600
stx L6601
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$06
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
lda L7B63
sec
sbc L7B5F
sta L6602
lda L7B64
sbc L7B60
sta L6603
lda L6602
sec
sbc L6600
sta L6602
lda L6603
sbc L6601
sta L6603
lsr L6603
ror L6602
ldx L6602
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
sec
sbc L7B5F
sta L6602
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
sbc L7B60
sta L6603
bpl L65D0
lda #$00
beq L65EB
2018-01-30 16:57:36 +00:00
L65D0: lda grafport2::width
2017-10-12 15:04:27 +00:00
cmp L7B63
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
2017-10-12 15:04:27 +00:00
sbc L7B64
bmi L65E2
tya
jmp L65EE
L65E2: lsr L6603
ror L6602
lda L6602
L65EB: jsr L62BC
2018-01-30 16:57:36 +00:00
L65EE: sta event_params+1
2017-10-12 15:04:27 +00:00
lda #$02
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::UpdateThumb, event_params
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L6600: .byte 0
L6601: .byte 0
L6602: .byte 0
L6603: .byte 0
2018-01-28 16:08:39 +00:00
L6604: lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L7D5D
sty L669F
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$08
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
lda L7B65
sec
sbc L7B61
sta L66A0
lda L7B66
sbc L7B62
sta L66A1
lda L66A0
sec
sbc L669F
sta L66A0
lda L66A1
sbc #$00
sta L66A1
lsr L66A1
ror L66A0
lsr L66A1
ror L66A0
ldx L66A0
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
sec
sbc L7B61
sta L66A0
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
sbc L7B62
sta L66A1
bpl L6669
lda #$00
beq L668A
2018-01-30 16:57:36 +00:00
L6669: lda grafport2::height
2017-10-12 15:04:27 +00:00
cmp L7B65
2018-01-30 16:57:36 +00:00
lda grafport2::height+1
2017-10-12 15:04:27 +00:00
sbc L7B66
bmi L667B
tya
jmp L668D
L667B: lsr L66A1
ror L66A0
lsr L66A1
ror L66A0
lda L66A0
L668A: jsr L62BC
2018-01-30 16:57:36 +00:00
L668D: sta event_params+1
2017-10-12 15:04:27 +00:00
lda #$01
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::UpdateThumb, event_params
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L669F: .byte 0
L66A0: .byte 0
L66A1: .byte 0
2018-01-28 16:08:39 +00:00
L66A2: ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L66AA
jmp L66F2
L66AA: lda #$01
sta $E26B
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableMenu, LE26A
2017-10-12 15:04:27 +00:00
lda #$01
sta $E26E
lda #$02
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$01
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
lda #$04
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
lda #$05
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-21 00:44:49 +00:00
sta menu_dispatch_flag
2017-10-12 15:04:27 +00:00
rts
L66F2: dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
and #$0F
tax
inx
stx $E268
lda #$01
sta $E269
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckItem, LE267
2017-10-12 15:04:27 +00:00
rts
L670C: lda #$01
sta $E26E
lda #$02
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$03
jsr L673A
lda #$05
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$07
jsr L673A
lda #$08
jsr L673A
lda #$0A
jsr L673A
lda #$0B
jsr L673A
lda #$0D
jsr L673A
rts
L673A: sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
rts
L6747: lda #$00
sta $E26E
lda #$02
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$03
jsr L6775
lda #$05
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$07
jsr L6775
lda #$08
jsr L6775
lda #$0A
jsr L6775
lda #$0B
jsr L6775
lda #$0D
jsr L6775
rts
L6775: sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
rts
L6782: lda #$00
sta $E26E
jmp L678F
L678A: lda #$01
sta $E26E
L678F: lda #$02
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$0B
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
rts
L67A3: lda #$01
sta $E26E
jmp L67B0
L67AB: lda #$00
sta $E26E
L67B0: lda #$03
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$02
jsr L67CA
lda #$03
jsr L67CA
lda #$04
jsr L67CA
lda #$80
2018-01-24 05:52:53 +00:00
sta LD343+1
2017-10-12 15:04:27 +00:00
rts
L67CA: sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
rts
L67D7: lda is_file_selected
2017-10-12 15:04:27 +00:00
bne L67DF
jmp L681B
L67DF: tax
dex
lda $D20D
L67E4: cmp selected_file_index,x
2017-10-12 15:04:27 +00:00
beq L67EE
dex
bpl L67E4
bmi L67F6
2018-01-28 16:08:39 +00:00
L67EE: bit double_click_flag
2017-10-12 15:04:27 +00:00
bmi L6834
jmp L6880
2017-12-31 20:04:22 +00:00
L67F6: bit BUTN0
2017-10-12 15:04:27 +00:00
bpl L6818
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L6818
DESKTOP_RELAY_CALL $02, $D20D
ldx is_file_selected
2017-10-12 15:04:27 +00:00
lda $D20D
sta selected_file_index,x
inc is_file_selected
2017-10-12 15:04:27 +00:00
jmp L6834
2018-01-20 18:57:25 +00:00
L6818: jsr clear_selection
L681B: DESKTOP_RELAY_CALL $02, $D20D
2017-10-12 15:04:27 +00:00
lda #$01
sta is_file_selected
2017-10-12 15:04:27 +00:00
lda $D20D
sta selected_file_index
2017-10-12 15:04:27 +00:00
lda #$00
sta selected_window_index
2018-01-28 16:08:39 +00:00
L6834: bit double_click_flag
2017-10-12 15:04:27 +00:00
bpl L6880
lda $D20D
2018-01-24 23:39:12 +00:00
sta LEBFC
DESKTOP_RELAY_CALL $0A, LEBFC
2017-10-12 15:04:27 +00:00
tax
2018-01-24 23:39:12 +00:00
lda LEBFC
2017-10-12 15:04:27 +00:00
beq L6878
jsr L8F00
cmp #$FF
bne L6858
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
L6858: lda LEBFC
2017-10-12 15:04:27 +00:00
cmp $EBFB
bne L6863
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
L6863: lda LEBFC
2017-10-12 15:04:27 +00:00
bpl L6872
and #$7F
pha
jsr L6F0D
pla
jmp L5E78
L6872: jsr L6A3F
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
L6878: txa
cmp #$02
bne L688F
2018-01-21 16:37:01 +00:00
jmp redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
L6880: lda $D20D
cmp $EBFB
beq L688E
jsr L6A8A
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
L688E: rts
L688F: ldx is_file_selected
2017-10-12 15:04:27 +00:00
dex
L6893: txa
pha
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
sta $E22D
DESKTOP_RELAY_CALL $03, $E22D
2017-10-12 15:04:27 +00:00
pla
tax
dex
bpl L6893
rts
2018-01-30 16:57:36 +00:00
L68AA: jsr reset_grafport3
2017-12-31 20:04:22 +00:00
bit BUTN0
2017-10-12 15:04:27 +00:00
bpl L68B3
rts
2018-01-20 18:57:25 +00:00
L68B3: jsr clear_selection
2017-10-12 15:04:27 +00:00
ldx #$03
2018-01-30 16:57:36 +00:00
L68B8: lda event_params_coords,x
2018-01-21 03:33:15 +00:00
sta rect_E230,x
2017-10-12 15:04:27 +00:00
sta $E234,x
dex
bpl L68B8
jsr L48F0
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2017-12-31 02:02:15 +00:00
beq L68CF
rts
2018-01-29 05:18:00 +00:00
L68CF: MGTK_RELAY_CALL MGTK::SetPattern, checkerboard_pattern3
2017-10-12 15:04:27 +00:00
jsr L48FA
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
L68E4: jsr L48F0
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2017-10-12 15:04:27 +00:00
beq L6932
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-05 05:05:54 +00:00
L68F9: cpx buf3len
2017-10-12 15:04:27 +00:00
bne L6904
lda #$00
sta selected_window_index
2017-10-12 15:04:27 +00:00
rts
L6904: txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-15 04:55:54 +00:00
sta LE22F
DESKTOP_RELAY_CALL $0D, LE22F
2017-10-12 15:04:27 +00:00
beq L692C
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $02, LE22F
ldx is_file_selected
inc is_file_selected
2018-01-15 04:55:54 +00:00
lda LE22F
sta selected_file_index,x
2017-10-12 15:04:27 +00:00
L692C: pla
tax
inx
jmp L68F9
2018-01-30 16:57:36 +00:00
L6932: lda event_params_xcoord
2017-10-12 15:04:27 +00:00
sec
sbc L6A39
sta L6A35
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc L6A3A
sta L6A36
2018-01-30 16:57:36 +00:00
lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sec
sbc L6A3B
sta L6A37
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc L6A3C
sta L6A38
lda L6A36
bpl L6968
lda L6A35
eor #$FF
sta L6A35
inc L6A35
L6968: lda L6A38
bpl L6978
lda L6A37
eor #$FF
sta L6A37
inc L6A37
L6978: lda L6A35
cmp #$05
bcs L6989
lda L6A37
cmp #$05
bcs L6989
jmp L68E4
2018-01-29 05:18:00 +00:00
L6989: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
ldx #$03
2018-01-30 16:57:36 +00:00
L6994: lda event_params_coords,x
2017-10-12 15:04:27 +00:00
sta L6A39,x
dex
bpl L6994
2018-01-30 16:57:36 +00:00
lda event_params_xcoord
2017-10-12 15:04:27 +00:00
cmp $E234
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc $E235
bpl L69D2
2018-01-30 16:57:36 +00:00
lda event_params_xcoord
2018-01-21 03:33:15 +00:00
cmp rect_E230
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc $E231
bmi L69BE
bit L6A3D
bpl L69D2
2018-01-30 16:57:36 +00:00
L69BE: lda event_params_xcoord
2018-01-21 03:33:15 +00:00
sta rect_E230
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sta $E231
lda #$80
sta L6A3D
jmp L69E3
2018-01-30 16:57:36 +00:00
L69D2: lda event_params_xcoord
2017-10-12 15:04:27 +00:00
sta $E234
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sta $E235
lda #$00
sta L6A3D
2018-01-30 16:57:36 +00:00
L69E3: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
cmp $E236
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc $E237
bpl L6A18
2018-01-30 16:57:36 +00:00
lda event_params_ycoord
2017-10-12 15:04:27 +00:00
cmp $E232
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc $E233
bmi L6A04
bit L6A3E
bpl L6A18
2018-01-30 16:57:36 +00:00
L6A04: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sta $E232
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sta $E233
lda #$80
sta L6A3E
jmp L6A29
2018-01-30 16:57:36 +00:00
L6A18: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sta $E236
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sta $E237
lda #$00
sta L6A3E
2018-01-29 05:18:00 +00:00
L6A29: MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-10-12 15:04:27 +00:00
jmp L68E4
2017-12-31 20:32:47 +00:00
L6A35: .byte 0
L6A36: .byte 0
L6A37: .byte 0
L6A38: .byte 0
L6A39: .byte 0
L6A3A: .byte 0
L6A3B: .byte 0
L6A3C: .byte 0
L6A3D: .byte 0
L6A3E: .byte 0
2017-10-12 15:04:27 +00:00
L6A3F: ldx #$07
2018-01-13 03:06:55 +00:00
L6A41: cmp LEC26,x
2017-10-12 15:04:27 +00:00
beq L6A80
dex
bpl L6A41
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
clc
adc #$09
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
txa
adc #$00
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
dey
2018-01-17 15:41:23 +00:00
L6A5C: lda ($06),y
sta $220,y
2017-10-12 15:04:27 +00:00
dey
bpl L6A5C
2018-01-17 15:41:23 +00:00
dec $220
2017-10-12 15:04:27 +00:00
lda #$2F
sta $0221
2018-01-25 04:20:39 +00:00
2017-10-12 15:04:27 +00:00
lda #$20
ldx #$02
2018-01-17 15:41:23 +00:00
ldy $220
2017-10-12 15:04:27 +00:00
jsr L6FB7
lda #$20
ldx #$02
2018-01-17 15:41:23 +00:00
ldy $220
2017-10-12 15:04:27 +00:00
jmp L6F4B
L6A80: inx
txa
pha
jsr L6F0D
pla
jmp L5E78
2018-01-12 18:01:28 +00:00
L6A8A: sta LE6BE
jsr DESKTOP_COPY_FROM_BUF
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
ldx #$07
2018-01-13 03:06:55 +00:00
L6A95: cmp LEC26,x
2017-10-12 15:04:27 +00:00
beq L6AA0
dex
bpl L6A95
jmp L6B1E
L6AA0: inx
2018-01-28 16:08:39 +00:00
cpx desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L6AA7
rts
2018-01-05 05:05:54 +00:00
L6AA7: stx bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-12 18:01:28 +00:00
lda LE6BE
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L6AD8
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L6AEF
jsr L44F2
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-12 18:01:28 +00:00
L6AD8: DESKTOP_RELAY_CALL $03, LE6BE
2018-01-31 05:42:26 +00:00
lda getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L6AEF
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
jsr L8893
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-12 18:01:28 +00:00
L6AEF: lda LE6BE
2017-10-12 15:04:27 +00:00
ldx $E1F1
dex
L6AF6: cmp $E1F2,x
beq L6B01
dex
bpl L6AF6
jsr L7054
2018-01-29 05:18:00 +00:00
L6B01: MGTK_RELAY_CALL MGTK::SelectWindow, bufnum
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-28 16:08:39 +00:00
sta desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L6C19
2018-01-20 18:57:25 +00:00
jsr redraw_windows
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jmp DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
L6B1E: lda $EC2E
cmp #$08
bcc L6B2F
2018-01-23 16:33:12 +00:00
lda #warning_msg_too_many_windows
jsr show_warning_dialog_num
2017-10-12 15:04:27 +00:00
ldx $E256
txs
rts
L6B2F: ldx #$00
2018-01-13 03:06:55 +00:00
L6B31: lda LEC26,x
2017-10-12 15:04:27 +00:00
beq L6B3A
inx
jmp L6B31
2018-01-12 18:01:28 +00:00
L6B3A: lda LE6BE
2018-01-13 03:06:55 +00:00
sta LEC26,x
2017-10-12 15:04:27 +00:00
inx
2018-01-05 05:05:54 +00:00
stx bufnum
jsr DESKTOP_COPY_TO_BUF
2017-10-12 15:04:27 +00:00
inc $EC2E
2018-01-05 05:05:54 +00:00
ldx bufnum
2017-10-12 15:04:27 +00:00
dex
lda #$00
2018-01-12 18:01:28 +00:00
sta LE6D1,x
2017-10-12 15:04:27 +00:00
lda $EC2E
cmp #$02
bcs L6B60
jsr L6EC5
jmp L6B68
L6B60: lda #$00
sta $E269
jsr L6C0F
L6B68: lda #$01
sta $E268
sta $E269
jsr L6C0F
2018-01-12 18:01:28 +00:00
lda LE6BE
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L6BA1
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
bne L6BB8
jsr L44F2
jsr L6E8E
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-12 18:01:28 +00:00
L6BA1: DESKTOP_RELAY_CALL $03, LE6BE
2018-01-31 05:42:26 +00:00
lda getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
beq L6BB8
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
jsr L8893
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2017-10-12 15:04:27 +00:00
L6BB8: jsr L744B
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-21 03:02:34 +00:00
jsr window_lookup
2017-10-12 15:04:27 +00:00
ldy #$38
2018-01-29 05:18:00 +00:00
jsr MGTK_RELAY
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L78EF
jsr L6E52
lda #$00
sta L6C0E
L6BDA: lda L6C0E
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
beq L6BF4
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
ldy #$01
2017-12-31 02:02:15 +00:00
jsr DESKTOP_RELAY
2017-10-12 15:04:27 +00:00
inc L6C0E
jmp L6BDA
2018-01-05 05:05:54 +00:00
L6BF4: lda bufnum
2018-01-28 16:08:39 +00:00
sta desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L6DB1
jsr L6E6E
jsr DESKTOP_COPY_FROM_BUF
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta bufnum
jsr DESKTOP_COPY_TO_BUF
2018-01-30 16:57:36 +00:00
jmp reset_grafport3
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L6C0E: .byte 0
2018-01-29 16:38:23 +00:00
L6C0F: MGTK_RELAY_CALL MGTK::CheckItem, LE267
2017-10-12 15:04:27 +00:00
rts
2018-01-05 05:05:54 +00:00
L6C19: ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bmi L6C25
jmp L6CCD
2018-01-11 06:31:02 +00:00
L6C25: jsr push_zp_addrs
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
bit L4152
bmi L6C39
jsr L78EF
2018-01-05 05:05:54 +00:00
L6C39: lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L4505
L6C42: bit L4152
bmi L6C4A
jsr L6E8E
2018-01-05 05:05:54 +00:00
L6C4A: ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2017-10-12 15:04:27 +00:00
ldx #$00
L6C53: cmp $E1F2,x
beq L6C5F
inx
cpx $E1F1
bne L6C53
rts
L6C5F: txa
asl a
tax
lda $E202,x
sta $E71D
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda $E203,x
sta $E71E
2018-01-17 15:41:23 +00:00
sta $06+1
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
lda LCBANK1
lda LCBANK1
tya
sta $E71F
inc $E71D
bne L6C8F
inc $E71E
L6C8F: lda #$10
sta $E6DB
sta $E6DF
sta $E6E3
sta $E6E7
lda #$00
sta $E6DC
sta $E6E0
sta $E6E4
sta $E6E8
lda #$00
sta L6CCC
L6CB0: lda L6CCC
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
beq L6CC5
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2017-10-12 15:04:27 +00:00
jsr L813F
inc L6CCC
jmp L6CB0
2018-01-30 16:57:36 +00:00
L6CC5: jsr reset_grafport3
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L6CCC: .byte 0
2018-01-05 05:05:54 +00:00
L6CCD: lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
bit L4152
bmi L6CDE
jsr L78EF
L6CDE: jsr L6E52
jsr L6E8E
ldx #$07
2018-01-30 16:57:36 +00:00
L6CE6: lda grafport2::cliprect_x1,x
2018-01-21 03:33:15 +00:00
sta rect_E230,x
2017-10-12 15:04:27 +00:00
dex
bpl L6CE6
ldx #$00
txa
pha
2018-01-05 05:05:54 +00:00
L6CF3: cpx buf3len
2017-10-12 15:04:27 +00:00
bne L6D09
pla
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6E6E
rts
L6D09: txa
pha
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-15 04:55:54 +00:00
sta LE22F
DESKTOP_RELAY_CALL $0D, LE22F
2017-10-12 15:04:27 +00:00
beq L6D25
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $03, LE22F
2017-10-12 15:04:27 +00:00
L6D25: pla
tax
inx
jmp L6CF3
2018-01-20 18:57:25 +00:00
clear_selection:
lda is_file_selected
2017-10-12 15:04:27 +00:00
bne L6D31
rts
L6D31: lda #$00
sta L6DB0
lda selected_window_index
2018-01-21 03:33:15 +00:00
sta rect_E230
2017-10-12 15:04:27 +00:00
beq L6D7D
2018-01-28 16:08:39 +00:00
cmp desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L6D4D
jsr L8997
lda #$00
2018-01-21 03:33:15 +00:00
sta rect_E230
2017-10-12 15:04:27 +00:00
beq L6D56
2018-01-31 05:42:26 +00:00
L6D4D: sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
jsr L6E8E
L6D56: lda L6DB0
cmp is_file_selected
2017-10-12 15:04:27 +00:00
beq L6D9B
tax
lda selected_file_index,x
2018-01-15 04:55:54 +00:00
sta LE22F
2017-10-12 15:04:27 +00:00
jsr L8915
2018-01-15 04:55:54 +00:00
DESKTOP_RELAY_CALL $0B, LE22F
lda LE22F
2017-10-12 15:04:27 +00:00
jsr L8893
inc L6DB0
jmp L6D56
L6D7D: lda L6DB0
cmp is_file_selected
2017-10-12 15:04:27 +00:00
beq L6D9B
tax
lda selected_file_index,x
2018-01-15 04:55:54 +00:00
sta LE22F
DESKTOP_RELAY_CALL $0B, LE22F
2017-10-12 15:04:27 +00:00
inc L6DB0
jmp L6D7D
L6D9B: lda #$00
ldx is_file_selected
2017-10-12 15:04:27 +00:00
dex
L6DA1: sta selected_file_index,x
2017-10-12 15:04:27 +00:00
dex
bpl L6DA1
sta is_file_selected
sta selected_window_index
2018-01-30 16:57:36 +00:00
jmp reset_grafport3
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L6DB0: .byte 0
2018-01-28 16:08:39 +00:00
L6DB1: ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bmi L6DC0
jsr L7B6B
jmp L6DC9
L6DC0: jsr L6E52
jsr L7B6B
jsr L6E6E
2018-01-28 16:08:39 +00:00
L6DC9: lda desktop_active_winid
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2017-10-12 15:04:27 +00:00
jsr L44F2
lda L7B5F
2018-01-30 16:57:36 +00:00
cmp grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
lda L7B60
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
bmi L6DFE
2018-01-30 16:57:36 +00:00
lda grafport2::width
2017-10-12 15:04:27 +00:00
cmp L7B63
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
2017-10-12 15:04:27 +00:00
sbc L7B64
bmi L6DFE
lda #$02
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-30 16:57:36 +00:00
sta event_params+1
2017-10-12 15:04:27 +00:00
jsr L6E48
jmp L6E0E
L6DFE: lda #$02
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
lda #$01
2018-01-30 16:57:36 +00:00
sta event_params+1
2017-10-12 15:04:27 +00:00
jsr L6E48
jsr L656D
L6E0E: lda L7B61
2018-01-30 16:57:36 +00:00
cmp grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
lda L7B62
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
bmi L6E38
2018-01-30 16:57:36 +00:00
lda grafport2::height
2017-10-12 15:04:27 +00:00
cmp L7B65
2018-01-30 16:57:36 +00:00
lda grafport2::height+1
2017-10-12 15:04:27 +00:00
sbc L7B66
bmi L6E38
lda #$01
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-30 16:57:36 +00:00
sta event_params+1
2017-10-12 15:04:27 +00:00
jsr L6E48
rts
L6E38: lda #$01
2018-01-30 16:57:36 +00:00
sta event_params
2017-10-12 15:04:27 +00:00
lda #$01
2018-01-30 16:57:36 +00:00
sta event_params+1
2017-10-12 15:04:27 +00:00
jsr L6E48
jmp L6604
2018-01-30 16:57:36 +00:00
L6E48: MGTK_RELAY_CALL MGTK::ActivateCtl, event_params ; ???
2017-10-12 15:04:27 +00:00
rts
L6E52: lda #$00
sta L6E6D
L6E57: lda L6E6D
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
beq L6E6C
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2017-10-12 15:04:27 +00:00
jsr L8915
inc L6E6D
jmp L6E57
L6E6C: rts
2017-12-31 20:32:47 +00:00
L6E6D: .byte 0
2017-10-12 15:04:27 +00:00
L6E6E: lda #$00
sta L6E89
L6E73: lda L6E89
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
beq L6E88
tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2017-10-12 15:04:27 +00:00
jsr L8893
inc L6E89
jmp L6E73
L6E88: rts
2017-12-31 20:32:47 +00:00
L6E89: .byte 0
2017-10-12 15:04:27 +00:00
L6E8A: lda #$80
beq L6E90
L6E8E: lda #$00
L6E90: sta L6EC4
2018-01-30 16:57:36 +00:00
lda grafport2::top
2017-10-12 15:04:27 +00:00
clc
adc #$0F
2018-01-30 16:57:36 +00:00
sta grafport2::top
lda grafport2::top+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-30 16:57:36 +00:00
sta grafport2::top+1
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
clc
adc #$0F
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_y1
lda grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
bit L6EC4
bmi L6EC3
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPort, grafport2
2017-10-12 15:04:27 +00:00
L6EC3: rts
2017-12-31 20:32:47 +00:00
L6EC4: .byte 0
2017-10-12 15:04:27 +00:00
L6EC5: lda #$00
sta $E26B
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableMenu, LE26A
2017-10-12 15:04:27 +00:00
lda #$00
sta $E26E
lda #$02
2018-01-15 05:16:36 +00:00
sta LE26C
2017-10-12 15:04:27 +00:00
lda #$01
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
lda #$04
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
lda #$05
sta $E26D
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::DisableItem, LE26C
2017-10-12 15:04:27 +00:00
lda #$80
2018-01-21 00:44:49 +00:00
sta menu_dispatch_flag
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:02:34 +00:00
L6F0D: jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
sta L6F48
2018-01-17 15:41:23 +00:00
stx $06+1
2017-10-12 15:04:27 +00:00
stx L6F49
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L6F4A
iny
L6F22: iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$2F
beq L6F31
cpy L6F4A
beq L6F32
jmp L6F22
L6F31: dey
L6F32: sty L6F4A
2018-01-17 15:41:23 +00:00
lda $06
ldx $06+1
2017-10-12 15:04:27 +00:00
jsr L6FB7
lda L6F48
ldx L6F49
ldy L6F4A
jmp L6F4B
2017-12-31 20:32:47 +00:00
L6F48: .byte 0
L6F49: .byte 0
L6F4A: .byte 0
2018-01-17 15:41:23 +00:00
L6F4B: sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
sty L705D
2018-01-17 15:41:23 +00:00
L6F52: lda ($06),y
2017-10-12 15:04:27 +00:00
sta L705D,y
dey
bne L6F52
jsr L72EC
bne L6F8F
lda L704B
beq L6F8F
L6F64: dec L704B
bmi L6F8F
ldx L704B
lda L704C,x
sec
sbc #$01
asl a
tax
lda L70BD
sta $EB8B,x
lda L70BE
sta $EB8C,x
lda L70BB
sta $EB9B,x
lda L70BC
sta $EB9C,x
jmp L6F64
L6F8F: rts
L6F90: sta $0A
stx $0B
ldy #$00
lda ($0A),y
tay
L6F99: lda ($0A),y
cmp #$2F
beq L6FA9
dey
bpl L6F99
ldy #$01
L6FA4: dey
lda ($0A),y
tay
rts
L6FA9: cpy #$01
beq L6FA4
dey
rts
2018-01-17 15:41:23 +00:00
L6FAF: sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda #$80
bne L6FBD
2018-01-17 15:41:23 +00:00
L6FB7: sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda #$00
L6FBD: sta L704A
bit L704A
bpl L6FCA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-24 05:37:41 +00:00
L6FCA: sty path_buffer
2018-01-17 15:41:23 +00:00
L6FCD: lda ($06),y
2018-01-24 05:37:41 +00:00
sta path_buffer,y
2017-10-12 15:04:27 +00:00
dey
bne L6FCD
2018-01-24 05:37:41 +00:00
addr_call L87BA, path_buffer
2017-10-12 15:04:27 +00:00
lda #$00
sta L704B
sta L7049
L6FE4: inc L7049
lda L7049
cmp #$09
bcc L6FF6
bit L704A
bpl L6FF5
lda #$00
L6FF5: rts
2018-01-21 03:02:34 +00:00
L6FF6: jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$0A
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
beq L6FE4
lda L7049
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-24 05:37:41 +00:00
cmp path_buffer
2017-10-12 15:04:27 +00:00
beq L7027
bit L704A
bmi L6FE4
2018-01-24 05:37:41 +00:00
ldy path_buffer
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$2F
bne L6FE4
dey
2018-01-17 15:41:23 +00:00
L7027: lda ($06),y
2018-01-24 05:37:41 +00:00
cmp path_buffer,y
2017-10-12 15:04:27 +00:00
bne L6FE4
dey
bne L7027
bit L704A
bmi L7045
ldx L704B
lda L7049
sta L704C,x
inc L704B
jmp L6FE4
L7045: lda L7049
rts
2017-12-31 20:32:47 +00:00
L7049: .byte 0
L704A: .byte 0
L704B: .byte 0
L704C: .byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
2017-10-12 15:04:27 +00:00
L7054: jmp L70C5
2018-01-14 07:24:19 +00:00
.proc open_params
params: .byte 3
2018-01-17 03:55:13 +00:00
path: .addr L705D
2018-01-14 07:24:19 +00:00
buffer: .addr $800
ref_num:.byte 0
.endproc
2017-12-31 20:32:47 +00:00
L705D: .res 64, 0
2018-01-14 07:09:51 +00:00
.byte $00
2018-01-14 07:52:03 +00:00
.proc read_params
params: .byte 4
ref_num:.byte 0
buffer: .addr $0C00
request:.word $200
trans: .word 0
.endproc
2018-01-14 07:24:19 +00:00
.proc close_params
params: .byte 1
ref_num:.byte 0
.endproc
2018-01-14 08:17:32 +00:00
.proc get_file_info_params4
params: .byte $A
2018-01-17 03:55:13 +00:00
path: .addr L705D
2018-01-14 08:17:32 +00:00
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
2018-01-14 07:24:19 +00:00
2018-01-14 08:17:32 +00:00
.byte 0
2017-12-31 02:02:15 +00:00
L70BB: .byte $00
L70BC: .byte $00
L70BD: .byte $00
L70BE: .byte $00
L70BF: .byte $00
L70C0: .byte $00
L70C1: .byte $00
L70C2: .byte $00
L70C3: .byte $00
L70C4: .byte $00
2017-10-12 15:04:27 +00:00
L70C5: sta L72A7
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
ldx #$40
L70CD: lda $E1B0,x
sta L705D,x
dex
bpl L70CD
jsr L72AA
2018-01-14 07:24:19 +00:00
lda open_params::ref_num
2018-01-14 07:52:03 +00:00
sta read_params::ref_num
2018-01-14 07:24:19 +00:00
sta close_params::ref_num
2017-10-12 15:04:27 +00:00
jsr L72CE
jsr L72E2
ldx #$00
L70EA: lda $0C23,x
sta L70BF,x
inx
cpx #$04
bne L70EA
lda L485D
sec
sbc L485F
sta L72A8
lda L485E
sbc L4860
sta L72A9
ldx #$05
L710A: lsr L72A9
ror L72A8
dex
cpx #$00
bne L710A
lda L70C2
bne L7147
2018-01-15 05:23:48 +00:00
lda LDD9E
2017-10-12 15:04:27 +00:00
clc
adc L70C1
bcs L7147
cmp #$7C
bcs L7147
lda L72A8
sec
2018-01-15 04:55:54 +00:00
sbc DEVCNT
2017-10-12 15:04:27 +00:00
sta L72A8
lda L72A9
sbc #$00
sta L72A9
lda L72A8
cmp L70C1
lda L72A9
sbc L70C2
bcs L7169
L7147: lda $EC2E
jsr L8B19
dec $EC2E
2018-01-21 16:37:01 +00:00
jsr redraw_windows_and_desktop
2017-10-12 15:04:27 +00:00
jsr L72D8
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
beq L715F
lda #$03
bne L7161
2018-01-23 16:33:12 +00:00
L715F: lda #warning_msg_window_must_be_closed2
L7161: jsr show_warning_dialog_num
2017-10-12 15:04:27 +00:00
ldx $E256
txs
rts
L7169: lda L485F
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda L4860
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
lda $E1F1
asl a
tax
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
sta $E202,x
2018-01-17 15:41:23 +00:00
lda $06+1
2017-10-12 15:04:27 +00:00
sta $E203,x
ldx $E1F1
lda L72A7
sta $E1F2,x
inc $E1F1
lda L70C1
pha
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldy #$00
pla
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda LCBANK1
lda LCBANK1
lda #$FF
sta L70C4
lda #$00
sta L70C3
2018-01-21 19:47:40 +00:00
lda #<$0C04
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
lda #>$0C04
sta $08+1
2018-01-17 15:41:23 +00:00
inc $06
lda $06
2017-10-12 15:04:27 +00:00
bne L71BD
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
L71BD: inc L70C4
lda L70C4
cmp L70C1
bne L71CB
jmp L7296
L71CB: inc L70C3
lda L70C3
cmp L70C0
beq L71E7
lda $08
clc
adc L70BF
sta $08
2018-01-21 19:47:40 +00:00
lda $08+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
jmp L71F7
L71E7: lda #$00
sta L70C3
2018-01-21 19:47:40 +00:00
lda #<$0C04
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
lda #>$0C04
sta $08+1
2017-10-12 15:04:27 +00:00
jsr L72CE
L71F7: ldx #$00
ldy #$00
lda ($08),y
and #$0F
sta $1F00,x
bne L7223
inc L70C3
lda L70C3
cmp L70C0
bne L7212
jmp L71E7
L7212: lda $08
clc
adc L70BF
sta $08
2018-01-21 19:47:40 +00:00
lda $08+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
jmp L71F7
L7223: iny
inx
L7225: lda ($08),y
sta $1F00,x
iny
inx
cpx #$11
bne L7225
ldy #$13
lda ($08),y
sta $1F00,x
inx
iny
lda ($08),y
sta $1F00,x
ldy #$18
inx
L7241: lda ($08),y
sta $1F00,x
inx
iny
cpy #$1C
bne L7241
ldy #$21
L724E: lda ($08),y
sta $1F00,x
inx
iny
cpy #$25
bne L724E
ldy #$1E
lda ($08),y
sta $1F00,x
inx
ldy #$25
lda ($08),y
sta $1F00,x
inx
iny
lda ($08),y
sta $1F00,x
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldx #$1F
ldy #$1F
L7279: lda $1F00,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dex
dey
bpl L7279
lda LCBANK1
lda LCBANK1
lda #$20
clc
2018-01-17 15:41:23 +00:00
adc $06
sta $06
2017-10-12 15:04:27 +00:00
bcc L7293
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
L7293: jmp L71BD
2018-01-17 15:41:23 +00:00
L7296: lda $06
2017-10-12 15:04:27 +00:00
sta L485F
2018-01-17 15:41:23 +00:00
lda $06+1
2017-10-12 15:04:27 +00:00
sta L4860
jsr L72D8
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L72A7: .byte 0
L72A8: .byte 0
L72A9: .byte 0
2018-01-28 16:08:39 +00:00
2018-01-14 07:24:19 +00:00
L72AA: MLI_RELAY_CALL OPEN, open_params
2017-10-12 15:04:27 +00:00
beq L72CD
jsr DESKTOP_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
jsr L8B1F
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L72C9
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
sta L533F
jsr L59A8
L72C9: ldx $E256
txs
L72CD: rts
2018-01-14 07:52:03 +00:00
L72CE: MLI_RELAY_CALL READ, read_params
2017-10-12 15:04:27 +00:00
rts
2018-01-14 07:24:19 +00:00
L72D8: MLI_RELAY_CALL CLOSE, close_params
2017-10-12 15:04:27 +00:00
rts
L72E2: lda $0C04
and #$F0
cmp #$F0
beq L72EC
rts
2018-01-14 08:17:32 +00:00
L72EC: MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params4
2017-10-12 15:04:27 +00:00
beq L72F8
rts
2018-01-14 08:17:32 +00:00
L72F8: lda get_file_info_params4::auxtype
2017-10-12 15:04:27 +00:00
sta L70BD
2018-01-14 08:17:32 +00:00
lda get_file_info_params4::auxtype+1
2017-10-12 15:04:27 +00:00
sta L70BE
2018-01-14 08:17:32 +00:00
lda get_file_info_params4::auxtype
2017-10-12 15:04:27 +00:00
sec
2018-01-14 08:17:32 +00:00
sbc get_file_info_params4::blocks
2017-10-12 15:04:27 +00:00
sta L70BB
2018-01-14 08:17:32 +00:00
lda get_file_info_params4::auxtype+1
sbc get_file_info_params4::blocks+1
2017-10-12 15:04:27 +00:00
sta L70BC
lda L70BD
sec
sbc L70BB
sta L70BD
lda L70BE
sbc L70BC
sta L70BE
lsr L70BC
ror L70BB
php
lsr L70BE
ror L70BD
plp
bcc L7342
inc L70BD
bne L7342
inc L70BE
L7342: lda #$00
rts
L7345: sta L7445
ldx #$00
L734A: lda $E1F2,x
cmp L7445
beq L7358
inx
cpx #$08
bne L734A
rts
L7358: stx L7446
dex
L735C: inx
lda $E1F3,x
sta $E1F2,x
cpx $E1F1
bne L735C
dec $E1F1
lda L7446
cmp $E1F1
bne L7385
ldx L7446
asl a
tax
lda $E202,x
sta L485F
lda $E203,x
sta L4860
rts
L7385: lda L7446
asl a
tax
lda $E202,x
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda $E203,x
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
inx
inx
lda $E202,x
sta $08
2018-01-21 19:47:40 +00:00
lda $E202+1,x
sta $08+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-12-31 20:04:22 +00:00
L73A5: lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda ($08),y
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda LCBANK1
lda LCBANK1
2018-01-17 15:41:23 +00:00
inc $06
2017-10-12 15:04:27 +00:00
bne L73BB
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
L73BB: inc $08
bne L73C1
2018-01-21 19:47:40 +00:00
inc $08+1
L73C1: lda $08+1
2017-10-12 15:04:27 +00:00
cmp L4860
bne L73A5
lda $08
cmp L485F
bne L73A5
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
lda $E1F1
asl a
tax
lda L485F
sec
sbc $E202,x
sta L7447
lda L4860
sbc $E203,x
sta L7448
inc L7446
L73ED: lda L7446
cmp $E1F1
bne L73F8
jmp L7429
L73F8: lda L7446
asl a
tax
lda $E204,x
sec
sbc $E202,x
sta L7449
lda $E205,x
sbc $E203,x
sta L744A
lda $E200,x
clc
adc L7449
sta $E202,x
lda $E201,x
adc L744A
sta $E203,x
inc L7446
jmp L73ED
L7429: lda $E1F1
sec
sbc #$01
asl a
tax
lda $E202,x
clc
adc L7447
sta L485F
lda $E203,x
adc L7448
sta L4860
rts
2017-12-31 20:32:47 +00:00
L7445: .byte 0
L7446: .byte 0
L7447: .byte 0
L7448: .byte 0
L7449: .byte 0
L744A: .byte 0
2018-01-28 16:08:39 +00:00
2018-01-05 05:05:54 +00:00
L744B: lda bufnum
2017-10-12 15:04:27 +00:00
asl a
tax
lda $E6BF,x
sta $08
lda $E6C0,x
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldy #$09
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
clc
adc #$09
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
bcc L746D
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
L746D: tya
tax
ldy #$00
2018-01-17 15:41:23 +00:00
L7471: lda ($06),y
2017-10-12 15:04:27 +00:00
sta ($08),y
iny
dex
bne L7471
lda #$20
sta ($08),y
ldy #$02
lda ($08),y
and #$DF
sta ($08),y
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
bne L74D3
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
clc
adc #$09
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
bcc L74A8
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
L74A8: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L74AD: lda ($06),y
2017-10-12 15:04:27 +00:00
sta ($08),y
dey
bpl L74AD
ldy #$00
lda ($08),y
sec
sbc #$01
sta ($08),y
ldy #$01
lda #$2F
sta ($08),y
ldy #$00
lda ($08),y
tay
L74C8: lda ($08),y
sta $E1B0,y
dey
bpl L74C8
jmp L7569
L74D3: tay
lda #$00
sta L7620
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
tya
pha
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
pla
asl a
tax
lda $E6BF,x
sta $08
lda $E6C0,x
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc ($08),y
cmp #$43
bcc L750D
lda #$40
jsr DESKTOP_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
jsr L8B1F
dec $EC2E
ldx $E256
txs
rts
L750D: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L7512: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E1B0,y
dey
bpl L7512
lda #$2F
sta $E1B1
inc $E1B0
ldx $E1B0
sta $E1B0,x
2018-01-12 18:01:28 +00:00
lda LE6BE
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2017-10-12 15:04:27 +00:00
ldx $E1B0
ldy #$09
lda ($08),y
clc
adc $E1B0
sta $E1B0
dec $E1B0
dec $E1B0
ldy #$0A
L7548: iny
inx
lda ($08),y
sta $E1B0,x
cpx $E1B0
bne L7548
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-21 03:02:34 +00:00
jsr window_address_lookup
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2017-10-12 15:04:27 +00:00
ldy $E1B0
L7561: lda $E1B0,y
sta ($08),y
dey
bpl L7561
L7569: lda $08
2018-01-21 19:47:40 +00:00
ldx $08+1
2017-10-12 15:04:27 +00:00
jsr L87BA
2018-01-05 05:05:54 +00:00
lda bufnum
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$14
2018-01-05 05:05:54 +00:00
lda bufnum
2017-10-12 15:04:27 +00:00
sec
sbc #$01
asl a
asl a
asl a
asl a
pha
adc #$05
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
lda #$00
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
pla
lsr a
clc
adc #$1B
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
lda #$00
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda #$00
ldy #$1F
ldx #$03
2018-01-17 15:41:23 +00:00
L75A3: sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
bpl L75A3
ldy #$04
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$FE
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$FE
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda #$00
ldy #$07
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$09
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
jsr L7054
2018-01-12 18:01:28 +00:00
lda LE6BE
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
beq L75FA
tax
dex
txa
asl a
tax
lda $EB8B,x
sta L70BD
lda $EB8C,x
sta L70BE
lda $EB9B,x
sta L70BB
lda $EB9C,x
sta L70BC
2018-01-05 05:05:54 +00:00
L75FA: ldx bufnum
2017-10-12 15:04:27 +00:00
dex
txa
asl a
tax
lda L70BD
sta $EB8B,x
lda L70BE
sta $EB8C,x
lda L70BB
sta $EB9B,x
lda L70BC
sta $EB9C,x
2018-01-05 05:05:54 +00:00
lda bufnum
2017-10-12 15:04:27 +00:00
jsr L7635
rts
2017-12-31 02:02:15 +00:00
L7620: .byte $00
2018-01-28 16:08:39 +00:00
2017-12-31 02:02:15 +00:00
L7621: .byte $00
L7622: .byte $00
L7623: .byte $00
L7624: .byte $00
L7625: .byte $00
2017-10-12 15:04:27 +00:00
L7626: .byte $34
2017-12-31 02:02:15 +00:00
L7627: .byte $00,$10,$00
L762A: .byte $00
L762B: .byte $00
L762C: .byte $00
L762D: .byte $00
2017-10-12 15:04:27 +00:00
L762E: .byte $05
2017-12-31 02:02:15 +00:00
L762F: .byte $00
L7630: .byte $00
L7631: .byte $00
L7632: .byte $00
L7633: .byte $00
L7634: .byte $00
2017-10-12 15:04:27 +00:00
L7635: pha
lda #$00
beq L7647
L763A: pha
2018-01-05 05:05:54 +00:00
ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2018-01-12 18:01:28 +00:00
sta LE6BE
2017-10-12 15:04:27 +00:00
lda #$80
L7647: sta L7634
pla
sta L7621
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
ldx #$03
L7653: lda L7626,x
sta L762A,x
dex
bpl L7653
lda #$00
sta L762F
sta L7625
ldx #$03
L7666: sta L7630,x
dex
bpl L7666
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
ldx $E1F1
dex
L7673: cmp $E1F2,x
beq L767C
dex
bpl L7673
rts
L767C: txa
asl a
tax
lda $E202,x
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda $E203,x
2018-01-17 15:41:23 +00:00
sta $06+1
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7764
lda LCBANK1
lda LCBANK1
2018-01-17 15:41:23 +00:00
inc $06
lda $06
2017-10-12 15:04:27 +00:00
bne L76A4
2018-01-17 15:41:23 +00:00
inc $06+1
2018-01-05 05:05:54 +00:00
L76A4: lda bufnum
2018-01-28 16:08:39 +00:00
sta desktop_active_winid
2017-10-12 15:04:27 +00:00
L76AA: lda L7625
cmp L7764
beq L76BB
jsr L7768
inc L7625
jmp L76AA
L76BB: bit L7634
bpl L76C4
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
L76C4: jsr L7B6B
lda L7621
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$16
lda L7B65
sec
2018-01-17 15:41:23 +00:00
sbc ($06),y
2017-10-12 15:04:27 +00:00
sta L7B65
lda L7B66
sbc #$00
sta L7B66
lda L7B63
cmp #$AA
lda L7B64
sbc #$00
bmi L7705
lda L7B63
cmp #$C2
lda L7B64
sbc #$01
bpl L770C
lda L7B63
ldx L7B64
jmp L7710
L7705: lda #$AA
ldx #$00
jmp L7710
L770C: lda #$C2
ldx #$01
L7710: ldy #$20
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
txa
iny
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda L7B65
cmp #$32
lda L7B66
sbc #$00
bmi L7739
lda L7B65
cmp #$6C
lda L7B66
sbc #$00
bpl L7740
lda L7B65
ldx L7B66
jmp L7744
L7739: lda #$32
ldx #$00
jmp L7744
L7740: lda #$6C
ldx #$00
L7744: ldy #$22
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
txa
iny
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda L7767
ldy #$06
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$08
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
ldx L7621
jsr L8B60
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 02:02:15 +00:00
L7764: .byte $00,$00,$00
2017-10-12 15:04:27 +00:00
L7767: .byte $14
2018-01-28 16:08:39 +00:00
2018-01-15 05:23:48 +00:00
L7768: inc LDD9E
jsr DESKTOP_FIND_SPACE
2018-01-05 05:05:54 +00:00
ldx buf3len
inc buf3len
sta buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $1800
iny
ldx #$00
2018-01-17 15:41:23 +00:00
L778E: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $1802,x
inx
iny
cpx $1800
bne L778E
inc $1800
inc $1800
lda #$20
sta $1801
ldx $1800
sta $1800,x
ldy #$10
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$B3
beq L77CC
cmp #$FF
bne L77DA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
ldx L77D0
2018-01-17 15:41:23 +00:00
L77BF: lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L77D0,x
bne L77D8
dey
beq L77D8
dex
bne L77BF
L77CC: lda #$01
bne L77DA
2018-01-01 05:16:41 +00:00
L77D0: PASCAL_STRING ".SYSTEM"
2018-01-28 16:08:39 +00:00
2017-10-12 15:04:27 +00:00
L77D8: lda #$FF
L77DA: tay
lda LCBANK1
lda LCBANK1
tya
jsr L78A1
2018-01-25 04:20:39 +00:00
addr_call L87BA, $1800
2017-10-12 15:04:27 +00:00
ldy #$09
ldx #$00
L77F0: lda $1800,x
sta ($08),y
iny
inx
cpx $1800
bne L77F0
lda $1800,x
sta ($08),y
ldx #$00
ldy #$03
L7805: lda L762A,x
sta ($08),y
inx
iny
cpx #$04
bne L7805
2018-01-05 05:05:54 +00:00
lda buf3len
2017-10-12 15:04:27 +00:00
cmp L762E
beq L781A
bcs L7826
L781A: lda L762A
sta L7630
lda L762B
sta L7631
L7826: lda L762C
sta L7632
lda L762D
sta L7633
inc L762F
lda L762F
cmp L762E
bne L7862
lda L762C
clc
adc #$20
sta L762C
lda L762D
adc #$00
sta L762D
lda L7626
sta L762A
lda L7627
sta L762B
lda #$00
sta L762F
jmp L7870
L7862: lda L762A
clc
adc #$50
sta L762A
bcc L7870
inc L762B
2018-01-05 05:05:54 +00:00
L7870: lda bufnum
2017-10-12 15:04:27 +00:00
ora L7624
ldy #$02
sta ($08),y
ldy #$07
lda L7622
sta ($08),y
iny
lda L7623
sta ($08),y
2018-01-05 05:05:54 +00:00
ldx buf3len
2017-10-12 15:04:27 +00:00
dex
2018-01-05 05:05:54 +00:00
lda buf3,x
2017-10-12 15:04:27 +00:00
jsr L8893
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
clc
adc #$20
2018-01-17 15:41:23 +00:00
sta $06
lda $06+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
.byte 0
.byte 0
2018-01-28 16:08:39 +00:00
2017-10-12 15:04:27 +00:00
L78A1: sta L78EE
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2018-01-11 05:10:24 +00:00
lda type_table_addr
2018-01-17 15:41:23 +00:00
sta $06
2018-01-11 05:10:24 +00:00
lda type_table_addr+1
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L78B6: lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L78EE
beq L78C2
dey
bpl L78B6
ldy #$01
2018-01-11 05:10:24 +00:00
L78C2: lda LFB04 ; ???
2018-01-17 15:41:23 +00:00
sta $06
2018-01-11 05:10:24 +00:00
lda LFB04+1
2018-01-17 15:41:23 +00:00
sta $06+1
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7624
dey
tya
asl a
tay
2018-01-11 05:10:24 +00:00
lda type_icons_addr
2018-01-17 15:41:23 +00:00
sta $06
2018-01-11 05:10:24 +00:00
lda type_icons_addr+1
2018-01-17 15:41:23 +00:00
sta $06+1
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7622
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7623
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L78EE: .byte 0
2018-01-30 16:57:36 +00:00
L78EF: lda grafport2::cliprect_x1
2018-01-15 04:55:54 +00:00
sta LEBBE ; Directory header line (items / k in disk)
2017-10-12 15:04:27 +00:00
clc
adc #$05
2018-01-11 06:31:02 +00:00
sta items_label_pos
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
sta $EBBF
adc #$00
sta $EBBB
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
clc
adc #$0C
sta $EBC0
sta $EBC4
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
adc #$00
sta $EBC1
sta $EBC5
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LEBBE
2018-01-30 16:57:36 +00:00
lda grafport2::width
2018-01-15 04:55:54 +00:00
sta LEBC2
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
2017-10-12 15:04:27 +00:00
sta $EBC3
jsr L48FA
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::LineTo, LEBC2
2017-10-12 15:04:27 +00:00
lda $EBC0
clc
adc #$02
sta $EBC0
sta $EBC4
lda $EBC1
adc #$00
sta $EBC1
sta $EBC5
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LEBBE
MGTK_RELAY_CALL MGTK::LineTo, LEBC2
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
clc
adc #$0A
2018-01-24 23:39:12 +00:00
sta items_label_pos+2
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1+1
2017-12-31 02:02:15 +00:00
adc #$00
2018-01-24 23:39:12 +00:00
sta items_label_pos+3
2018-01-05 05:05:54 +00:00
lda buf3len
2017-10-12 15:04:27 +00:00
ldx #$00
jsr L7AE0
2018-01-05 05:05:54 +00:00
lda buf3len
2017-10-12 15:04:27 +00:00
cmp #$02
bcs L798A
2018-01-11 06:31:02 +00:00
dec str_items ; remove trailing s
2018-01-29 05:18:00 +00:00
L798A: MGTK_RELAY_CALL MGTK::MoveTo, items_label_pos
2017-10-12 15:04:27 +00:00
jsr L7AD7
2018-01-11 06:31:02 +00:00
addr_call draw_text2, str_items
2018-01-05 05:05:54 +00:00
lda buf3len
2017-10-12 15:04:27 +00:00
cmp #$02
bcs L79A7
2018-01-11 06:31:02 +00:00
inc str_items ; restore trailing s
2017-10-12 15:04:27 +00:00
L79A7: jsr L79F7
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
txa
asl a
tax
lda $EB8B,x
tay
lda $EB8C,x
tax
tya
jsr L7AE0
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LEBEB
2017-10-12 15:04:27 +00:00
jsr L7AD7
2018-01-11 06:31:02 +00:00
addr_call draw_text2, str_k_in_disk
2018-01-28 16:08:39 +00:00
ldx desktop_active_winid
2017-10-12 15:04:27 +00:00
dex
txa
asl a
tax
lda $EB9B,x
tay
lda $EB9C,x
tax
tya
jsr L7AE0
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LEBEF
2017-10-12 15:04:27 +00:00
jsr L7AD7
2018-01-11 06:31:02 +00:00
addr_call draw_text2, str_k_available
2017-10-12 15:04:27 +00:00
rts
2018-01-30 16:57:36 +00:00
L79F7: lda grafport2::width
2017-10-12 15:04:27 +00:00
sec
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
sta L7ADE
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
sbc grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
sta L7ADF
lda L7ADE
sec
sbc $EBF3
sta L7ADE
lda L7ADF
sbc $EBF4
sta L7ADF
bpl L7A22
jmp L7A86
L7A22: lda L7ADE
sec
sbc $EBF9
sta L7ADE
lda L7ADF
sbc $EBFA
sta L7ADF
bpl L7A3A
jmp L7A86
L7A3A: lda $EBE7
clc
adc L7ADE
2018-01-15 04:55:54 +00:00
sta LEBEF
2017-10-12 15:04:27 +00:00
lda $EBE8
adc L7ADF
2018-01-24 23:39:12 +00:00
sta LEBEF+1
2017-10-12 15:04:27 +00:00
lda L7ADF
beq L7A59
lda L7ADE
cmp #$18
bcc L7A6A
2018-01-15 04:55:54 +00:00
L7A59: lda LEBEF
2017-10-12 15:04:27 +00:00
sec
sbc #$0C
2018-01-15 04:55:54 +00:00
sta LEBEF
2018-01-24 23:39:12 +00:00
lda LEBEF+1
2017-10-12 15:04:27 +00:00
sbc #$00
2018-01-24 23:39:12 +00:00
sta LEBEF+1
2017-10-12 15:04:27 +00:00
L7A6A: lsr L7ADF
ror L7ADE
2018-01-13 03:06:55 +00:00
lda LEBE3
2017-10-12 15:04:27 +00:00
clc
adc L7ADE
2018-01-15 04:55:54 +00:00
sta LEBEB
2017-10-12 15:04:27 +00:00
lda $EBE4
adc L7ADF
2018-01-24 23:39:12 +00:00
sta LEBEB+1
2017-10-12 15:04:27 +00:00
jmp L7A9E
2018-01-13 03:06:55 +00:00
L7A86: lda LEBE3
2018-01-15 04:55:54 +00:00
sta LEBEB
2018-01-13 03:06:55 +00:00
lda LEBE3+1
2018-01-24 23:39:12 +00:00
sta LEBEB+1
2017-10-12 15:04:27 +00:00
lda $EBE7
2018-01-15 04:55:54 +00:00
sta LEBEF
2017-10-12 15:04:27 +00:00
lda $EBE8
2018-01-24 23:39:12 +00:00
sta LEBEF+1
2018-01-15 04:55:54 +00:00
L7A9E: lda LEBEB
2017-10-12 15:04:27 +00:00
clc
2018-01-30 16:57:36 +00:00
adc grafport2::cliprect_x1
2018-01-15 04:55:54 +00:00
sta LEBEB
2018-01-24 23:39:12 +00:00
lda LEBEB+1
2018-01-30 16:57:36 +00:00
adc grafport2::cliprect_x1+1
2018-01-24 23:39:12 +00:00
sta LEBEB+1
2018-01-15 04:55:54 +00:00
lda LEBEF
2017-10-12 15:04:27 +00:00
clc
2018-01-30 16:57:36 +00:00
adc grafport2::cliprect_x1
2018-01-15 04:55:54 +00:00
sta LEBEF
2018-01-24 23:39:12 +00:00
lda LEBEF+1
2018-01-30 16:57:36 +00:00
adc grafport2::cliprect_x1+1
2018-01-24 23:39:12 +00:00
sta LEBEF+1
lda items_label_pos+2
sta LEBEB+2
sta LEBEF+2
lda items_label_pos+3
sta LEBEB+3
sta LEBEF+3
2017-10-12 15:04:27 +00:00
rts
2018-01-11 06:31:02 +00:00
L7AD7: addr_jump draw_text2, str_6_spaces
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L7ADE: .byte 0
L7ADF: .byte 0
2017-10-12 15:04:27 +00:00
L7AE0: sta L7B5B
stx L7B5C
ldx #$06
lda #$20
2018-01-12 18:01:28 +00:00
L7AEA: sta str_6_spaces,x
2017-10-12 15:04:27 +00:00
dex
bne L7AEA
lda #$00
sta L7B5E
ldy #$00
ldx #$00
L7AF9: lda #$00
sta L7B5D
L7AFE: lda L7B5B
cmp L7B53,x
lda L7B5C
sbc L7B54,x
bpl L7B31
lda L7B5D
bne L7B1A
bit L7B5E
bmi L7B1A
lda #$20
bne L7B24
L7B1A: clc
adc #$30
pha
lda #$80
sta L7B5E
pla
2018-01-12 18:01:28 +00:00
L7B24: sta str_6_spaces+2,y
2017-10-12 15:04:27 +00:00
iny
inx
inx
cpx #$08
beq L7B4A
jmp L7AF9
L7B31: inc L7B5D
lda L7B5B
sec
sbc L7B53,x
sta L7B5B
lda L7B5C
sbc L7B54,x
sta L7B5C
jmp L7AFE
L7B4A: lda L7B5B
2018-01-12 18:01:28 +00:00
ora #'0'
sta str_6_spaces+2,y
2017-10-12 15:04:27 +00:00
rts
L7B53: .byte $10
2018-01-01 05:16:41 +00:00
L7B54: .byte $27,$E8,$03,$64,$00,$0A,$00
2017-12-31 20:32:47 +00:00
L7B5B: .byte 0
L7B5C: .byte 0
L7B5D: .byte 0
L7B5E: .byte 0
L7B5F: .byte 0
L7B60: .byte 0
L7B61: .byte 0
L7B62: .byte 0
L7B63: .byte 0
L7B64: .byte 0
L7B65: .byte 0
L7B66: .byte 0
L7B67: .byte 0
L7B68: .byte 0
L7B69: .byte 0
L7B6A: .byte 0
2017-10-12 15:04:27 +00:00
L7B6B: ldx #$03
lda #$00
L7B6F: sta L7B63,x
dex
bpl L7B6F
sta L7D5B
lda #$FF
sta L7B5F
sta L7B61
lda #$7F
sta L7B60
sta L7B62
2018-01-05 05:05:54 +00:00
ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
bpl L7BCB
2018-01-05 05:05:54 +00:00
lda buf3len
2017-10-12 15:04:27 +00:00
bne L7BA1
L7B96: lda #$00
ldx #$03
L7B9A: sta L7B5F,x
dex
bpl L7B9A
rts
L7BA1: clc
adc #$02
ldx #$00
stx L7D5C
asl a
rol L7D5C
asl a
rol L7D5C
asl a
rol L7D5C
sta L7B65
lda L7D5C
sta L7B66
2018-01-24 04:11:38 +00:00
lda #<$168
2017-10-12 15:04:27 +00:00
sta L7B63
2018-01-24 04:11:38 +00:00
lda #>$168
sta L7B63+1
2017-10-12 15:04:27 +00:00
jmp L7B96
2018-01-05 05:05:54 +00:00
L7BCB: lda buf3len
2017-10-12 15:04:27 +00:00
cmp #$01
bne L7BEF
2018-01-05 05:05:54 +00:00
lda buf3
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$06
ldx #$03
2018-01-17 15:41:23 +00:00
L7BE0: lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7B5F,x
sta L7B63,x
dey
dex
bpl L7BE0
jmp L7BF7
L7BEF: lda L7D5B
2018-01-05 05:05:54 +00:00
cmp buf3len
2017-10-12 15:04:27 +00:00
bne L7C36
L7BF7: lda L7B63
clc
adc #$32
sta L7B63
bcc L7C05
inc L7B64
L7C05: lda L7B65
clc
adc #$20
sta L7B65
bcc L7C13
inc L7B66
L7C13: lda L7B5F
sec
sbc #$32
sta L7B5F
lda L7B60
sbc #$00
sta L7B60
lda L7B61
sec
sbc #$0F
sta L7B61
lda L7B62
sbc #$00
sta L7B62
rts
L7C36: tax
2018-01-05 05:05:54 +00:00
lda buf3,x
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$0F
cmp L7D5C
bne L7C52
inc L7D5B
jmp L7BEF
L7C52: ldy #$06
ldx #$03
2018-01-17 15:41:23 +00:00
L7C56: lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7B67,x
dey
dex
bpl L7C56
bit L7B60
bmi L7C88
bit L7B68
bmi L7CCE
lda L7B67
cmp L7B5F
lda L7B68
sbc L7B60
bmi L7CCE
lda L7B67
cmp L7B63
lda L7B68
sbc L7B64
bpl L7CBF
jmp L7CDA
L7C88: bit L7B68
bmi L7CA3
bit L7B64
bmi L7CDA
lda L7B67
cmp L7B63
lda L7B68
sbc L7B64
bmi L7CDA
jmp L7CBF
L7CA3: lda L7B67
cmp L7B5F
lda L7B68
sbc L7B60
bmi L7CCE
lda L7B67
cmp L7B63
lda L7B68
sbc L7B64
bmi L7CDA
L7CBF: lda L7B67
sta L7B63
lda L7B68
sta L7B64
jmp L7CDA
L7CCE: lda L7B67
sta L7B5F
lda L7B68
sta L7B60
L7CDA: bit L7B62
bmi L7D03
bit L7B6A
bmi L7D49
lda L7B69
cmp L7B61
lda L7B6A
sbc L7B62
bmi L7D49
lda L7B69
cmp L7B65
lda L7B6A
sbc L7B66
bpl L7D3A
jmp L7D55
L7D03: bit L7B6A
bmi L7D1E
bit L7B66
bmi L7D55
lda L7B69
cmp L7B65
lda L7B6A
sbc L7B66
bmi L7D55
jmp L7D3A
L7D1E: lda L7B69
cmp L7B61
lda L7B6A
sbc L7B62
bmi L7D49
lda L7B69
cmp L7B65
lda L7B6A
sbc L7B66
bmi L7D55
L7D3A: lda L7B69
sta L7B65
lda L7B6A
sta L7B66
jmp L7D55
L7D49: lda L7B69
sta L7B61
lda L7B6A
sta L7B62
L7D55: inc L7D5B
jmp L7BEF
2017-12-31 20:32:47 +00:00
L7D5B: .byte 0
L7D5C: .byte 0
2018-01-21 03:02:34 +00:00
L7D5D: jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$23
ldx #$07
2018-01-17 15:41:23 +00:00
L7D68: lda ($06),y
2017-10-12 15:04:27 +00:00
sta L7D94,x
dey
dex
bpl L7D68
lda L7D98
sec
sbc L7D94
pha
lda L7D99
sbc L7D95
pha
lda L7D9A
sec
sbc L7D96
pha
lda L7D9B
sbc L7D97
pla
tay
pla
tax
pla
rts
2017-12-31 20:32:47 +00:00
L7D94: .byte 0
L7D95: .byte 0
L7D96: .byte 0
L7D97: .byte 0
L7D98: .byte 0
L7D99: .byte 0
L7D9A: .byte 0
L7D9B: .byte 0
2017-10-12 15:04:27 +00:00
L7D9C: jmp L7D9F
2018-01-05 05:05:54 +00:00
L7D9F: ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-13 03:06:55 +00:00
lda LEC26,x
2017-10-12 15:04:27 +00:00
ldx #$00
L7DA8: cmp $E1F2,x
beq L7DB4
inx
cpx $E1F1
bne L7DA8
rts
L7DB4: txa
asl a
tax
lda $E202,x
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
sta $0801
lda $E203,x
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
sta $0802
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda #$00
sta L0800
tay
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $0803
2018-01-17 15:41:23 +00:00
inc $06
2017-10-12 15:04:27 +00:00
inc $0801
bne L7DE4
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
inc $0802
L7DE4: lda L0800
cmp $0803
beq L7E0C
jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$17
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bne L7E06
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bne L7E06
lda #$01
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
L7E06: inc L0800
jmp L7DE4
L7E0C: lda LCBANK1
lda LCBANK1
2018-01-05 05:05:54 +00:00
ldx bufnum
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
lda LE6D1,x
2017-10-12 15:04:27 +00:00
cmp #$81
beq L7E20
jmp L7EC1
2017-12-31 20:04:22 +00:00
L7E20: lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda #$5A
ldx #$0F
L7E2A: sta $0808,x
dex
bpl L7E2A
lda #$00
sta $0805
sta L0800
L7E38: lda $0805
cmp $0803
bne L7E43
jmp L80F5
L7E43: jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bmi L7E82
and #$0F
sta $0804
ldy #$01
2018-01-17 15:41:23 +00:00
L7E53: lda ($06),y
2017-10-12 15:04:27 +00:00
cmp $0807,y
beq L7E5F
bcs L7E82
jmp L7E67
L7E5F: iny
cpy #$10
bne L7E53
jmp L7E82
L7E67: lda L0800
sta $0806
ldx #$0F
lda #$20
L7E71: sta $0808,x
dex
bpl L7E71
ldy $0804
2018-01-17 15:41:23 +00:00
L7E7A: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $0807,y
dey
bne L7E7A
L7E82: inc L0800
lda L0800
cmp $0803
beq L7E90
jmp L7E43
L7E90: inc $0805
lda $0806
sta L0800
jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda #$5A
ldx #$0F
L7EA8: sta $0808,x
dex
bpl L7EA8
ldx $0805
dex
ldy $0806
iny
jsr L812B
lda #$00
sta L0800
jmp L7E38
L7EC1: cmp #$82
beq L7EC8
jmp L7F58
2017-12-31 20:04:22 +00:00
L7EC8: lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda #$00
sta $0808
sta $0809
sta $0805
sta L0800
L7EDC: lda $0805
cmp $0803
bne L7EE7
jmp L80F5
L7EE7: jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bmi L7F1B
ldy #$18
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp $0809
beq L7EFE
bcs L7F08
jmp L7F1B
L7EFE: dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp $0808
beq L7F1B
bcc L7F1B
L7F08: ldy #$18
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $0809
dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $0808
lda L0800
sta $0806
L7F1B: inc L0800
lda L0800
cmp $0803
beq L7F29
jmp L7EE7
L7F29: inc $0805
lda $0806
sta L0800
jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda #$00
sta $0808
sta $0809
ldx $0805
dex
ldy $0806
iny
jsr L812B
lda #$00
sta L0800
jmp L7EDC
L7F58: cmp #$83
beq L7F5F
jmp L801F
2017-12-31 20:04:22 +00:00
L7F5F: lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda #$00
sta $0808
sta $0809
sta $0805
sta L0800
L7F73: lda $0805
cmp $0803
bne L7F7E
jmp L80F5
L7F7E: jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bmi L7FAD
ldy #$12
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp $0809
beq L7F92
bcs L7F9C
L7F92: dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp $0808
beq L7F9C
bcc L7FAD
2018-01-17 15:41:23 +00:00
L7F9C: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $0808
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $0809
lda L0800
sta $0806
L7FAD: inc L0800
lda L0800
cmp $0803
beq L7FBB
jmp L7F7E
L7FBB: inc $0805
lda $0806
sta L0800
jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda #$00
sta $0808
sta $0809
ldx $0805
dex
ldy $0806
iny
jsr L812B
lda #$00
sta L0800
jmp L7F73
lda LCBANK1
lda LCBANK1
lda #$54
sta $E6D9
lda #$00
sta $E6DA
lda #$CB
sta $E6DD
lda #$00
sta $E6DE
lda #$00
sta $E6E1
sta $E6E2
lda #$E7
2018-01-21 19:47:40 +00:00
sta LE6E5
2017-10-12 15:04:27 +00:00
lda #$00
sta $E6E6
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
jmp L80F5
L801F: cmp #$84
beq L8024
rts
2018-01-11 05:10:24 +00:00
L8024: lda type_table_addr
2017-10-12 15:04:27 +00:00
sta $08
2018-01-11 05:10:24 +00:00
lda type_table_addr+1
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldy #$00
lda ($08),y
sta $0807
tay
L8036: lda ($08),y
sta $0807,y
dey
bne L8036
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
lda #$00
sta $0805
sta L0800
lda #$FF
sta $0806
L8051: lda $0805
cmp $0803
bne L805C
jmp L80F5
L805C: jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bmi L807E
ldy #$10
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ldx $0807
cpx #$00
beq L8075
cmp $0808,x
bne L807E
L8075: lda L0800
sta $0806
jmp L809E
L807E: inc L0800
lda L0800
cmp $0803
beq L808C
jmp L805C
L808C: lda $0806
cmp #$FF
bne L809E
dec $0807
lda #$00
sta L0800
jmp L805C
L809E: inc $0805
lda $0806
sta L0800
jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
ora #$80
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldx $0805
dex
ldy $0806
iny
jsr L812B
lda #$00
sta L0800
lda #$FF
sta $0806
jmp L8051
L80CA: lda #$00
sta $0804
lda L0800
asl a
rol $0804
asl a
rol $0804
asl a
rol $0804
asl a
rol $0804
asl a
rol $0804
clc
adc $0801
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda $0802
adc $0804
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
rts
L80F5: lda #$00
sta L0800
L80FA: lda L0800
cmp $0803
beq L8124
jsr L80CA
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$17
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bne L811E
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$01
bne L811E
lda #$00
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
L811E: inc L0800
jmp L80FA
L8124: lda LCBANK1
lda LCBANK1
rts
L812B: lda LCBANK1
lda LCBANK1
tya
2018-01-05 05:05:54 +00:00
sta buf3,x
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L813C: .byte 0
.byte 0
2017-10-12 15:04:27 +00:00
L813E: php
L813F: ldy #$00
tax
dex
txa
sty L813C
asl a
rol L813C
asl a
rol L813C
asl a
rol L813C
asl a
rol L813C
asl a
rol L813C
clc
adc $E71D
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda $E71E
adc L813C
2018-01-17 15:41:23 +00:00
sta $06+1
2017-12-31 20:04:22 +00:00
lda LCBANK2
lda LCBANK2
2017-10-12 15:04:27 +00:00
ldy #$1F
2018-01-17 15:41:23 +00:00
L8171: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $EC43,y
dey
bpl L8171
lda LCBANK1
lda LCBANK1
ldx #$31
lda #$20
2018-01-12 18:01:28 +00:00
L8183: sta text_buffer2::data-1,x
2017-10-12 15:04:27 +00:00
dex
bpl L8183
lda #$00
2018-01-12 18:01:28 +00:00
sta text_buffer2::length
2017-10-12 15:04:27 +00:00
lda $E6DF
clc
adc L813E
sta $E6DF
bcc L819D
inc $E6E0
L819D: lda $E6E3
clc
adc L813E
sta $E6E3
bcc L81AC
inc $E6E4
L81AC: lda $E6E7
clc
adc L813E
sta $E6E7
bcc L81BB
inc $E6E8
L81BB: lda $E6DB
2018-01-30 16:57:36 +00:00
cmp grafport2::height
2017-10-12 15:04:27 +00:00
lda $E6DC
2018-01-30 16:57:36 +00:00
sbc grafport2::height+1
2017-10-12 15:04:27 +00:00
bmi L81D9
lda $E6DB
clc
adc L813E
sta $E6DB
bcc L81D8
inc $E6DC
L81D8: rts
L81D9: lda $E6DB
clc
adc L813E
sta $E6DB
bcc L81E8
inc $E6DC
L81E8: lda $E6DB
2018-01-30 16:57:36 +00:00
cmp grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
lda $E6DC
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
bpl L81F7
rts
L81F7: jsr L821F
SETPOS_RELAY_CALL $E6D9
2017-10-12 15:04:27 +00:00
jsr L8241
SETPOS_RELAY_CALL $E6DD
2017-10-12 15:04:27 +00:00
jsr L8253
SETPOS_RELAY_CALL $E6E1
2017-10-12 15:04:27 +00:00
jsr L830F
2018-01-21 19:47:40 +00:00
lda #<LE6E5
ldx #>LE6E5
2018-01-04 21:14:07 +00:00
jmp SETPOS_RELAY
2017-10-12 15:04:27 +00:00
L821F: lda $EC43
and #$0F
2018-01-12 18:01:28 +00:00
sta text_buffer2::length
2017-10-12 15:04:27 +00:00
tax
L8228: lda $EC43,x
sta $E6EC,x
dex
bne L8228
lda #$20
sta $E6EC
2018-01-12 18:01:28 +00:00
inc text_buffer2::length
2018-01-24 05:37:41 +00:00
addr_call L87BA, $E6EB
2017-10-12 15:04:27 +00:00
rts
L8241: lda $EC53
jsr L8707
ldx #$04
2018-01-16 04:33:32 +00:00
L8249: lda LDFC5,x
2018-01-12 18:01:28 +00:00
sta text_buffer2::data-1,x
2017-10-12 15:04:27 +00:00
dex
bpl L8249
rts
L8253: lda $EC54
ldx $EC55
L8259: sta L8272
stx L8273
jmp L8276
2017-12-31 03:21:34 +00:00
L8262: .byte $20
.byte "Blocks "
L826A: .byte $10 ; ???
L826B: .byte $27,$E8
2018-01-01 05:16:41 +00:00
.byte $03,$64,$00,$0A,$00
2017-12-31 20:32:47 +00:00
L8272: .byte 0
L8273: .byte 0
L8274: .byte 0
L8275: .byte 0
2017-10-12 15:04:27 +00:00
L8276: ldx #$11
2018-01-24 04:11:38 +00:00
lda #' '
2018-01-12 18:01:28 +00:00
L827A: sta text_buffer2::data-1,x
2017-10-12 15:04:27 +00:00
dex
bpl L827A
lda #$00
2018-01-12 18:01:28 +00:00
sta text_buffer2::length
2017-10-12 15:04:27 +00:00
sta L8275
ldy #$00
ldx #$00
L828C: lda #$00
sta L8274
L8291: lda L8272
cmp L826A,x
lda L8273
sbc L826B,x
bpl L82C3
lda L8274
bne L82AD
bit L8275
bmi L82AD
lda #$20
bne L82B6
L82AD: ora #$30
pha
lda #$80
sta L8275
pla
L82B6: sta $E6ED,y
iny
inx
inx
cpx #$08
beq L82DC
jmp L828C
L82C3: inc L8274
lda L8272
sec
sbc L826A,x
sta L8272
lda L8273
L82D3: sbc L826B,x
sta L8273
jmp L8291
L82DC: lda L8272
ora #$30
sta $E6ED,y
iny
ldx #$00
L82E7: lda L8262,x
sta $E6ED,y
iny
inx
cpx L8262
bne L82E7
lda L8274
bne L8305
bit L8275
bmi L8305
lda L8272
cmp #$02
bcc L8309
L8305: lda #$0D
bne L830B
L8309: lda #$0C
2018-01-12 18:01:28 +00:00
L830B: sta text_buffer2::length
2017-10-12 15:04:27 +00:00
rts
L830F: ldx #$15
2018-01-24 04:11:38 +00:00
lda #' '
2018-01-21 19:47:40 +00:00
: sta text_buffer2::data-1,x
2017-10-12 15:04:27 +00:00
dex
2018-01-21 19:47:40 +00:00
bpl :-
2017-10-12 15:04:27 +00:00
lda #$01
2018-01-12 18:01:28 +00:00
sta text_buffer2::length
2018-01-21 19:47:40 +00:00
lda #<text_buffer2::length
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
lda #>text_buffer2::length
sta $08+1
lda date ; any bits set?
ora date+1
bne prep_date_strings
sta month ; 0 is "no date" string
jmp prep_month_string
prep_date_strings:
lda date+1
and #$FE ; extract year
2017-10-12 15:04:27 +00:00
lsr a
2018-01-21 19:47:40 +00:00
sta year
lda date+1 ; extract month
2017-10-12 15:04:27 +00:00
ror a
2018-01-21 19:47:40 +00:00
lda date
2017-10-12 15:04:27 +00:00
ror a
lsr a
lsr a
lsr a
lsr a
2018-01-21 19:47:40 +00:00
sta month
lda date ; extract day
2017-10-12 15:04:27 +00:00
and #$1F
2018-01-21 19:47:40 +00:00
sta day
jsr prep_month_string
jsr prep_day_string
jmp prep_year_string
.proc prep_day_string
;; String will have trailing space.
lda #' '
sta str_3_spaces+1
sta str_3_spaces+2
sta str_3_spaces+3
;; Assume 1 digit (plus trailing space)
ldx #2
;; Determine first digit.
lda day
ora #'0' ; if < 10, will just be value itself
2017-10-12 15:04:27 +00:00
tay
2018-01-21 19:47:40 +00:00
lda day
cmp #10
bcc :+
inx ; will be 2 digits
ldy #'1'
cmp #20
bcc :+
ldy #'2'
cmp #30
bcc :+
ldy #'3'
: stx str_3_spaces ; length (including trailing space)
sty str_3_spaces+1 ; first digit
;; Determine second digit.
cpx #2 ; only 1 digit (plus trailing space?)
beq done
2017-10-12 15:04:27 +00:00
tya
2018-01-21 19:47:40 +00:00
and #$03 ; ascii -> tens digit
2017-10-12 15:04:27 +00:00
tay
2018-01-21 19:47:40 +00:00
lda day ; subtract 10 as needed
: sec
sbc #10
2017-10-12 15:04:27 +00:00
dey
2018-01-21 19:47:40 +00:00
bne :-
ora #'0'
sta str_3_spaces+2
done: addr_jump L84A4, str_3_spaces
.endproc
2017-10-12 15:04:27 +00:00
2018-01-21 19:47:40 +00:00
.proc prep_month_string
lda month
2017-10-12 15:04:27 +00:00
asl a
tay
2018-01-21 19:47:40 +00:00
lda month_table+1,y
2017-10-12 15:04:27 +00:00
tax
2018-01-21 19:47:40 +00:00
lda month_table,y
2017-10-12 15:04:27 +00:00
jmp L84A4
2018-01-21 19:47:40 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-21 19:47:40 +00:00
.proc prep_year_string
ldx tens_table_length
: lda year
2017-10-12 15:04:27 +00:00
sec
2018-01-21 19:47:40 +00:00
sbc tens_table-1,x
bpl :+
2017-10-12 15:04:27 +00:00
dex
2018-01-21 19:47:40 +00:00
bne :-
: tay
2017-12-31 20:32:47 +00:00
lda ascii_digits,x
sta year_string_10s
lda ascii_digits,y
sta year_string_1s
2018-01-24 05:37:41 +00:00
addr_jump L84A4, str_year
2018-01-21 19:47:40 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-24 05:37:41 +00:00
year: .byte 0
month: .byte 0
day: .byte 0
2018-01-21 19:47:40 +00:00
str_3_spaces:
PASCAL_STRING " "
month_table:
.addr str_no_date
.addr str_jan,str_feb,str_mar,str_apr,str_may,str_jun
.addr str_jul,str_aug,str_sep,str_oct,str_nov,str_dec
str_no_date:
2017-12-31 03:21:34 +00:00
PASCAL_STRING "no date "
2018-01-21 19:47:40 +00:00
str_jan:PASCAL_STRING "January "
str_feb:PASCAL_STRING "February "
str_mar:PASCAL_STRING "March "
str_apr:PASCAL_STRING "April "
str_may:PASCAL_STRING "May "
str_jun:PASCAL_STRING "June "
str_jul:PASCAL_STRING "July "
str_aug:PASCAL_STRING "August "
str_sep:PASCAL_STRING "September "
str_oct:PASCAL_STRING "October "
str_nov:PASCAL_STRING "November "
str_dec:PASCAL_STRING "December "
str_year:
2017-12-31 03:21:34 +00:00
PASCAL_STRING " 1985"
2017-12-31 20:32:47 +00:00
year_string_10s := *-2 ; 10s digit
year_string_1s := *-1 ; 1s digit
2017-12-31 03:21:34 +00:00
2018-01-21 19:47:40 +00:00
tens_table_length:
.byte 9
tens_table:
.byte 10,20,30,40,50,60,70,80,90
2017-12-31 20:32:47 +00:00
ascii_digits:
.byte "0123456789"
2018-01-17 15:41:23 +00:00
L84A4: sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
lda ($08),y
sta L84D0
clc
2018-01-17 15:41:23 +00:00
adc ($06),y
2017-10-12 15:04:27 +00:00
sta ($08),y
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-21 19:47:40 +00:00
sta compare_y
: inc L84D0
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sty L84CF
ldy L84D0
sta ($08),y
ldy L84CF
2018-01-21 19:47:40 +00:00
compare_y := *+1
cpy #0 ; self-modified
bcc :-
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L84CF: .byte 0
L84D0: .byte 0
2018-01-21 19:47:40 +00:00
2018-01-11 06:31:02 +00:00
L84D1: jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
bit L5B1B
bmi L84DC
jsr L6E52
2018-01-30 16:57:36 +00:00
L84DC: lda grafport2::width
2017-10-12 15:04:27 +00:00
sec
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
sta L85F8
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
sbc grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
sta L85F9
2018-01-30 16:57:36 +00:00
lda grafport2::height
2017-10-12 15:04:27 +00:00
sec
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
sta L85FA
2018-01-30 16:57:36 +00:00
lda grafport2::height+1
sbc grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
sta L85FB
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2017-10-12 15:04:27 +00:00
bne L850C
asl a
bne L850E
L850C: lda #$00
L850E: sta L85F1
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda #$06
clc
adc L85F1
tay
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
pha
jsr L7B6B
ldx L85F1
lda L7B63,x
sec
sbc L7B5F,x
sta L85F2
lda L7B64,x
sbc L7B60,x
sta L85F3
ldx L85F1
lda L85F2
sec
sbc L85F8,x
sta L85F2
lda L85F3
sbc L85F9,x
sta L85F3
bpl L8562
lda L85F8,x
sta L85F2
lda L85F9,x
sta L85F3
L8562: lsr L85F3
ror L85F2
lsr L85F3
ror L85F2
lda L85F2
tay
pla
tax
2018-01-30 16:57:36 +00:00
lda event_params+1
2017-10-12 15:04:27 +00:00
jsr L62BC
ldx #$00
stx L85F2
asl a
rol L85F2
asl a
rol L85F2
ldx L85F1
clc
adc L7B5F,x
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_x1,x
2017-10-12 15:04:27 +00:00
lda L85F2
adc L7B60,x
2018-01-30 16:57:36 +00:00
sta grafport2::cliprect_x1+1,x
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2017-10-12 15:04:27 +00:00
jsr L7D5D
sta L85F4
2018-01-21 22:35:37 +00:00
stx L85F5
sty L85F6
2017-10-12 15:04:27 +00:00
lda L85F1
beq L85C3
2018-01-30 16:57:36 +00:00
lda grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
clc
adc L85F6
2018-01-30 16:57:36 +00:00
sta grafport2::height
lda grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-30 16:57:36 +00:00
sta grafport2::height+1
2017-10-12 15:04:27 +00:00
jmp L85D6
2018-01-30 16:57:36 +00:00
L85C3: lda grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
clc
adc L85F4
2018-01-30 16:57:36 +00:00
sta grafport2::width
lda grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
adc L85F5
2018-01-30 16:57:36 +00:00
sta grafport2::width+1
2018-01-28 16:08:39 +00:00
L85D6: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$23
ldx #$07
2018-01-30 16:57:36 +00:00
L85E4: lda grafport2::cliprect_x1,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
dex
bpl L85E4
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L85F1: .byte 0
L85F2: .byte 0
L85F3: .byte 0
L85F4: .byte 0
L85F5: .byte 0
L85F6: .byte 0
.byte 0
L85F8: .byte 0
L85F9: .byte 0
L85FA: .byte 0
L85FB: .byte 0
2018-01-21 00:44:49 +00:00
;;; ==================================================
;;; Double Click Detection
2018-01-21 01:16:31 +00:00
;;; Returns with A=0 if double click, A=$FF otherwise.
2018-01-21 00:44:49 +00:00
2018-01-21 01:16:31 +00:00
.proc detect_double_click
2018-01-21 00:44:49 +00:00
double_click_deltax := 8
double_click_deltay := 7
2018-01-21 01:16:31 +00:00
;; Stash initial coords
2018-01-21 00:44:49 +00:00
ldx #3
2018-01-30 16:57:36 +00:00
: lda event_params_coords,x
2018-01-21 00:44:49 +00:00
sta coords,x
2017-10-12 15:04:27 +00:00
sta $EBFD,x
dex
2018-01-21 00:44:49 +00:00
bpl :-
lda #0
2018-01-21 01:16:31 +00:00
sta counter+1
2018-01-21 22:35:37 +00:00
lda machine_type ; Speed of mouse driver? ($96=IIe,$FA=IIc,$FD=IIgs)
2018-01-21 01:16:31 +00:00
asl a ; * 2
rol counter+1 ; So IIe = $12C, IIc = $1F4, IIgs = $1FA
sta counter
;; Decrement counter, bail if time delta exceeded
loop: dec counter
2018-01-21 00:44:49 +00:00
bne :+
2018-01-21 01:16:31 +00:00
dec counter+1
lda counter+1
2018-01-21 00:44:49 +00:00
bne exit
2018-01-21 01:16:31 +00:00
: jsr L48F0 ; ???
;; Check coords, bail if pixel delta exceeded
2018-01-21 00:44:49 +00:00
jsr check_delta
bmi exit ; moved past delta; no double-click
lda #$FF ; ???
sta unused
2018-01-30 16:57:36 +00:00
lda event_params_kind
2018-01-21 00:44:49 +00:00
sta state ; unused ???
2018-01-29 05:18:00 +00:00
cmp #MGTK::no_event
2018-01-21 00:44:49 +00:00
beq loop
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2018-01-21 00:44:49 +00:00
beq loop
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_up
2018-01-21 00:44:49 +00:00
bne :+
jsr get_input
jmp loop
2018-01-29 05:18:00 +00:00
: cmp #MGTK::button_down
2018-01-21 00:44:49 +00:00
bne exit
2017-10-12 15:04:27 +00:00
2018-01-21 00:44:49 +00:00
jsr get_input
lda #$00 ; double-click
2017-10-12 15:04:27 +00:00
rts
2018-01-21 00:44:49 +00:00
exit: lda #$FF ; not double-click
2017-10-12 15:04:27 +00:00
rts
2018-01-21 00:44:49 +00:00
;; Is the new coord within range of the old coord?
.proc check_delta
;; compute x delta
2018-01-30 16:57:36 +00:00
lda event_params_xcoord
2017-10-12 15:04:27 +00:00
sec
2018-01-21 00:44:49 +00:00
sbc xcoord
sta delta
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2018-01-21 00:44:49 +00:00
sbc xcoord+1
bpl :+
;; is -delta < x < 0 ?
lda delta
cmp #($100 - double_click_deltax)
bcs check_y
fail: lda #$FF
2017-10-12 15:04:27 +00:00
rts
2018-01-21 00:44:49 +00:00
;; is 0 < x < delta ?
: lda delta
cmp #double_click_deltax
bcs fail
;; compute y delta
2018-01-30 16:57:36 +00:00
check_y:lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sec
2018-01-21 00:44:49 +00:00
sbc ycoord
sta delta
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2018-01-21 00:44:49 +00:00
sbc ycoord+1
bpl :+
;; is -delta < y < 0 ?
lda delta
cmp #($100 - double_click_deltay)
bcs ok
;; is 0 < y < delta ?
: lda delta
cmp #double_click_deltay
bcs fail
ok: lda #$00
2017-10-12 15:04:27 +00:00
rts
2018-01-21 00:44:49 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-21 01:16:31 +00:00
counter:.word 0
2018-01-21 00:44:49 +00:00
coords:
xcoord: .word 0
ycoord: .word 0
delta: .byte 0
2018-01-21 01:16:31 +00:00
state: .byte 0 ; unused?
2018-01-21 00:44:49 +00:00
unused: .byte 0 ; ???
.endproc
;;; ==================================================
2018-01-21 03:02:34 +00:00
;;; A = A * 4, high bits into X
2018-01-21 00:44:49 +00:00
2018-01-21 03:02:34 +00:00
.proc a_times_4
ldx #0
stx tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
ldx tmp
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:02:34 +00:00
tmp: .byte 0
.endproc
;;; ==================================================
;;; A = A * 6, high bits into X
.proc a_times_6
ldx #$00
stx tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
2017-10-12 15:04:27 +00:00
asl a
2018-01-21 03:02:34 +00:00
rol tmp
ldx tmp
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:02:34 +00:00
tmp: .byte 0
.endproc
;;; ==================================================
;;; Look up file address. Index in A, address in A,X.
file_address_lookup:
asl a
2017-10-12 15:04:27 +00:00
tax
lda file_address_table,x
2017-10-12 15:04:27 +00:00
pha
lda file_address_table+1,x
2017-10-12 15:04:27 +00:00
tax
pla
rts
2018-01-21 03:02:34 +00:00
;;; ==================================================
;;; Look up window. Index in A, address in A,X.
window_lookup:
asl a
2017-10-12 15:04:27 +00:00
tax
2018-01-21 03:02:34 +00:00
lda win_table,x
2017-10-12 15:04:27 +00:00
pha
2018-01-21 03:02:34 +00:00
lda win_table+1,x
2017-10-12 15:04:27 +00:00
tax
pla
rts
2018-01-21 03:02:34 +00:00
;;; ==================================================
;;; Look up window address. Index in A, address in A,X.
window_address_lookup:
asl a
2017-10-12 15:04:27 +00:00
tax
lda window_address_table,x
2017-10-12 15:04:27 +00:00
pha
lda window_address_table+1,x
2017-10-12 15:04:27 +00:00
tax
pla
rts
2018-01-21 03:02:34 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L8707: sta L877F
2018-01-11 05:10:24 +00:00
lda type_table_addr
2018-01-17 15:41:23 +00:00
sta $06
2018-01-11 05:10:24 +00:00
lda type_table_addr+1
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L8719: lda ($06),y
2017-10-12 15:04:27 +00:00
cmp L877F
beq L8726
dey
bne L8719
jmp L8745
L8726: tya
asl a
asl a
tay
2018-01-11 05:10:24 +00:00
lda type_names_addr
2018-01-17 15:41:23 +00:00
sta $06
2018-01-11 05:10:24 +00:00
lda type_names_addr+1
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldx #$00
2018-01-17 15:41:23 +00:00
L8736: lda ($06),y
2018-01-16 04:33:32 +00:00
sta LDFC6,x
2017-10-12 15:04:27 +00:00
iny
inx
cpx #$04
bne L8736
2018-01-16 04:33:32 +00:00
stx LDFC5
2017-10-12 15:04:27 +00:00
rts
L8745: lda #$04
2018-01-16 04:33:32 +00:00
sta LDFC5
2017-10-12 15:04:27 +00:00
lda #$20
2018-01-16 04:33:32 +00:00
sta LDFC6
2017-10-12 15:04:27 +00:00
lda #$24
2018-01-16 04:33:32 +00:00
sta LDFC7
2017-10-12 15:04:27 +00:00
lda L877F
lsr a
lsr a
lsr a
lsr a
cmp #$0A
bcs L8764
clc
adc #$30
bne L8767
L8764: clc
adc #$37
2018-01-16 04:33:32 +00:00
L8767: sta LDFC8
2017-10-12 15:04:27 +00:00
lda L877F
and #$0F
cmp #$0A
bcs L8778
clc
adc #$30
bne L877B
L8778: clc
adc #$37
2018-01-16 04:33:32 +00:00
L877B: sta LDFC9
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L877F: .byte 0
2017-10-12 15:04:27 +00:00
2018-01-21 03:33:15 +00:00
;;; ==================================================
;;; Draw text, pascal string address in A,X
.proc draw_text2
ptr := $6
len := $8
sta ptr
stx ptr+1
ldy #0
lda (ptr),y
beq exit
sta len
inc ptr
bne :+
inc ptr+1
2018-01-29 05:18:00 +00:00
: MGTK_RELAY_CALL MGTK::DrawText, $6
2018-01-21 03:33:15 +00:00
exit: rts
.endproc
;;; ==================================================
;;; Measure text, pascal string address in A,X; result in A,X
.proc measure_text1
ptr := $6
len := $8
result := $9
sta ptr
stx ptr+1
ldy #0
lda (ptr),y
sta len
inc ptr
bne :+
inc ptr+1
2018-01-29 05:18:00 +00:00
: MGTK_RELAY_CALL MGTK::TextWidth, $6
2018-01-21 03:33:15 +00:00
lda result
ldx result+1
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:33:15 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
L87BA: stx $0B
sta $0A
ldy #$00
lda ($0A),y
tay
bne L87C6
rts
L87C6: dey
beq L87CB
bpl L87CC
L87CB: rts
L87CC: lda ($0A),y
and #$7F
cmp #$2F
beq L87DC
cmp #$20
beq L87DC
cmp #$2E
bne L87E0
L87DC: dey
jmp L87C6
L87E0: iny
lda ($0A),y
and #$7F
cmp #$41
bcc L87F2
cmp #$5B
bcs L87F2
clc
adc #$20
sta ($0A),y
L87F2: dey
jmp L87C6
;;; ==================================================
2018-01-21 03:33:15 +00:00
;;; Pushes two words from $6/$8 to stack
2018-01-11 06:31:02 +00:00
.proc push_zp_addrs
2018-01-21 03:33:15 +00:00
ptr := $6
pla ; stash return address
sta addr
2017-10-12 15:04:27 +00:00
pla
sta addr+1
ldx #0 ; copy 4 bytes from $8 to stack
2018-01-21 03:33:15 +00:00
loop: lda ptr,x
2017-10-12 15:04:27 +00:00
pha
inx
cpx #4
bne loop
lda addr+1 ; restore return address
2017-10-12 15:04:27 +00:00
pha
lda addr
2017-10-12 15:04:27 +00:00
pha
rts
addr: .addr 0
.endproc
;;; ==================================================
;;; Pops two words from stack to $6/$8
2018-01-21 03:33:15 +00:00
2018-01-11 06:31:02 +00:00
.proc pop_zp_addrs
2018-01-21 03:33:15 +00:00
ptr := $6
pla ; stash return address
sta addr
2017-10-12 15:04:27 +00:00
pla
sta addr+1
ldx #3 ; copy 4 bytes from stack to $6
loop: pla
2018-01-21 03:33:15 +00:00
sta ptr,x
2017-10-12 15:04:27 +00:00
dex
cpx #$FF ; why not bpl ???
bne loop
lda addr+1 ; restore return address to stack
2017-10-12 15:04:27 +00:00
pha
lda addr
2017-10-12 15:04:27 +00:00
pha
rts
addr: .addr 0
.endproc
;;; ==================================================
2017-12-31 20:32:47 +00:00
L8830: .byte 0
L8831: .byte 0
L8832: .byte 0
L8833: .res 34, 0
2017-10-12 15:04:27 +00:00
L8855: tay
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
tya
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldx #$00
ldy #$14
2018-01-17 15:41:23 +00:00
L8865: lda ($06),y
2017-10-12 15:04:27 +00:00
sta L8830,x
iny
inx
cpx #$24
bne L8865
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
L8874: tay
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
tya
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldx #$00
ldy #$14
L8884: lda L8830,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
inx
cpx #$24
bne L8884
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
L8893: tay
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
tya
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-28 16:08:39 +00:00
lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2017-10-12 15:04:27 +00:00
ldy #$17
ldx #$03
L88AD: lda ($08),y
sta L890D,x
dey
dex
bpl L88AD
ldy #$1F
ldx #$03
L88BA: lda ($08),y
sta L8911,x
dey
dex
bpl L88BA
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc L890D
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc L890E
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc L890F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc L8910
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
sbc L8911
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sbc L8912
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
sbc L8913
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sbc L8914
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L890D: .byte 0
L890E: .byte 0
L890F: .byte 0
L8910: .byte 0
L8911: .byte 0
L8912: .byte 0
L8913: .byte 0
L8914: .byte 0
2018-01-21 03:33:15 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L8915: tay
2018-01-11 06:31:02 +00:00
jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
tya
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-28 16:08:39 +00:00
L8921: lda desktop_active_winid
2018-01-21 03:02:34 +00:00
jsr window_lookup
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2017-10-12 15:04:27 +00:00
ldy #$17
ldx #$03
L892F: lda ($08),y
sta L898F,x
dey
dex
bpl L892F
ldy #$1F
ldx #$03
L893C: lda ($08),y
sta L8993,x
dey
dex
bpl L893C
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
sbc L898F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sbc L8990
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sec
sbc L8991
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sbc L8992
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc L8993
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc L8994
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc L8995
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc L8996
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L898F: .byte 0
L8990: .byte 0
L8991: .byte 0
L8992: .byte 0
L8993: .byte 0
L8994: .byte 0
L8995: .byte 0
L8996: .byte 0
2018-01-21 03:33:15 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L8997: lda #$00
tax
2018-01-30 16:57:36 +00:00
L899A: sta grafport5::cliprect_x1,x
sta grafport5::left,x
sta grafport5::width,x
2017-10-12 15:04:27 +00:00
inx
cpx #$04
bne L899A
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPort, grafport5
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:33:15 +00:00
;;; ==================================================
2018-01-14 05:36:18 +00:00
.proc on_line_params
params: .byte 2
unit: .byte 0
buffer: .addr $800
.endproc
.proc get_device_info
2018-01-18 17:32:25 +00:00
sta unit_number
sty device_num
2017-10-12 15:04:27 +00:00
and #$F0
2018-01-14 05:36:18 +00:00
sta on_line_params::unit
MLI_RELAY_CALL ON_LINE, on_line_params
2017-10-12 15:04:27 +00:00
beq L89DD
L89CC: pha
ldy device_num
2017-10-12 15:04:27 +00:00
lda #$00
sta $E1A0,y
2018-01-05 05:05:54 +00:00
dec buf3len
2018-01-15 05:23:48 +00:00
dec LDD9E
2017-10-12 15:04:27 +00:00
pla
rts
L89DD: lda L0800
and #$0F
bne L89EA
lda $0801
jmp L89CC
2018-01-11 06:31:02 +00:00
L89EA: jsr push_zp_addrs
jsr DESKTOP_FIND_SPACE
ldy device_num
2017-10-12 15:04:27 +00:00
sta $E1A0,y
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldx #$00
ldy #$09
lda #$20
2018-01-17 15:41:23 +00:00
L8A03: sta ($06),y
2017-10-12 15:04:27 +00:00
iny
inx
cpx #$12
bne L8A03
ldy #$09
lda L0800
and #$0F
sta L0800
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-25 04:20:39 +00:00
addr_call L87BA, $800
2017-10-12 15:04:27 +00:00
ldx #$00
ldy #$0B
L8A22: lda $0801,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
inx
cpx L0800
bne L8A22
ldy #$09
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc #$02
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-18 17:32:25 +00:00
lda unit_number
cmp #$3E ; ??? Special case? Maybe RamWorks?
beq use_ramdisk_icon
and #$0F ; lower nibble
2018-01-18 17:32:25 +00:00
cmp #DT_PROFILE ; ProFile or Slinky-style RAM ?
bne use_floppy_icon
;; BUG: This defaults SmartPort hard drives to use floppy icons.
2018-01-18 17:32:25 +00:00
;; See https://github.com/inexorabletash/a2d/issues/6 for more
;; context; this code is basically unsalvageable per ProDOS
;; Tech Note #21.
;; Either ProFile or a "Slinky"/RamFactor-style Disk
2018-01-18 17:32:25 +00:00
lda unit_number ; bit 7 = drive (0=1, 1=2); 5-7 = slot
and #%01110000 ; mask off slot
2017-10-12 15:04:27 +00:00
lsr a
lsr a
lsr a
lsr a
ora #$C0
sta load_CxFB
load_CxFB := *+2
2018-01-15 04:55:54 +00:00
lda $C7FB ; self-modified $Cx7B
and #$01 ; $Cx7B bit 1 = ProFile, apparently???
beq use_profile_icon
;; fall through...
2018-01-13 04:58:02 +00:00
use_ramdisk_icon:
ldy #7
lda #<desktop_aux::ramdisk_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
lda #>desktop_aux::ramdisk_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
jmp selected_device_icon
2017-10-12 15:04:27 +00:00
use_profile_icon:
ldy #7
lda #<desktop_aux::profile_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
lda #>desktop_aux::profile_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
jmp selected_device_icon
2017-10-12 15:04:27 +00:00
use_floppy_icon:
2018-01-18 17:32:25 +00:00
cmp #$B ; removable / 4 volumes
bne use_floppy140_icon
ldy #7
lda #<desktop_aux::floppy800_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
lda #>desktop_aux::floppy800_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
jmp selected_device_icon
2017-10-12 15:04:27 +00:00
use_floppy140_icon:
2018-01-18 17:32:25 +00:00
cmp #DT_DISKII ; 0 = Disk II
bne use_profile_icon ; last chance
ldy #7
lda #<desktop_aux::floppy140_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
iny
lda #>desktop_aux::floppy140_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
selected_device_icon:
ldy #$02
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-17 15:41:23 +00:00
sta ($06),y
inc device_num
lda device_num
2017-10-12 15:04:27 +00:00
asl a
asl a
tax
ldy #$03
L8AA7: lda L8AC5,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
inx
iny
cpy #$07
bne L8AA7
2018-01-05 05:05:54 +00:00
ldx buf3len
2017-10-12 15:04:27 +00:00
dex
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-05 05:05:54 +00:00
sta buf3,x
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
lda #$00
rts
.endproc
2018-01-21 03:33:15 +00:00
;;; ==================================================
2018-01-18 17:32:25 +00:00
unit_number: .byte 0
device_num: .byte 0
2017-10-12 15:04:27 +00:00
2017-12-31 02:02:15 +00:00
L8AC5: .byte $00,$00,$00,$00,$EA,$01,$10,$00
.byte $EA,$01,$2D,$00,$EA,$01,$4B,$00
.byte $EA,$01,$67,$00,$EA,$01,$83,$00
.byte $90,$01,$A0,$00,$36,$01,$A0,$00
.byte $DC,$00,$A0,$00,$82,$00,$A0,$00
2018-01-14 05:36:18 +00:00
.byte $28,$00,$A0,$00
.proc get_prefix_params
params: .byte 1
buffer: .addr $4824
.endproc
2018-01-14 05:36:18 +00:00
2018-01-05 05:05:54 +00:00
L8AF4: ldx buf3len
2017-10-12 15:04:27 +00:00
dex
2018-01-05 05:05:54 +00:00
L8AF8: cmp buf3,x
2017-10-12 15:04:27 +00:00
beq L8B01
dex
bpl L8AF8
rts
2018-01-05 05:05:54 +00:00
L8B01: lda buf3+1,x
sta buf3,x
2017-10-12 15:04:27 +00:00
inx
2018-01-05 05:05:54 +00:00
cpx buf3len
2017-10-12 15:04:27 +00:00
bne L8B01
2018-01-05 05:05:54 +00:00
dec buf3len
ldx buf3len
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-05 05:05:54 +00:00
sta buf3,x
2017-10-12 15:04:27 +00:00
rts
2018-01-11 06:31:02 +00:00
L8B19: jsr push_zp_addrs
2017-10-12 15:04:27 +00:00
jmp L8B2E
2018-01-12 18:01:28 +00:00
L8B1F: lda LE6BE
2017-10-12 15:04:27 +00:00
bne L8B25
rts
2018-01-11 06:31:02 +00:00
L8B25: jsr push_zp_addrs
2018-01-12 18:01:28 +00:00
lda LE6BE
2017-10-12 15:04:27 +00:00
jsr L7345
2018-01-12 18:01:28 +00:00
L8B2E: lda LE6BE
2017-10-12 15:04:27 +00:00
ldx #$07
2018-01-13 03:06:55 +00:00
L8B33: cmp LEC26,x
2017-10-12 15:04:27 +00:00
beq L8B3E
dex
bpl L8B33
jmp L8B43
L8B3E: lda #$00
2018-01-13 03:06:55 +00:00
sta LEC26,x
2018-01-12 18:01:28 +00:00
L8B43: lda LE6BE
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
jsr L4244
2018-01-11 06:31:02 +00:00
jsr pop_zp_addrs
2017-10-12 15:04:27 +00:00
rts
L8B5C: ldy #$80
bne L8B62
L8B60: ldy #$00
L8B62: sty L8D4A
sta L8D4B
stx L8D4C
txa
2018-01-21 03:02:34 +00:00
jsr window_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda #$14
clc
adc #$23
tay
ldx #$23
2018-01-17 15:41:23 +00:00
L8B7B: lda ($06),y
2018-01-30 16:57:36 +00:00
sta grafport2,x
2017-10-12 15:04:27 +00:00
dey
dex
bpl L8B7B
lda L8D4B
2018-01-21 03:02:34 +00:00
jsr file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc #$07
sta L0800
sta $0804
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc #$00
sta $0801
sta $0805
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc #$07
sta $0802
sta $0806
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
adc #$00
sta $0803
sta $0807
ldy #$5B
ldx #$03
2018-01-30 16:57:36 +00:00
L8BC1: lda grafport2,x
2017-10-12 15:04:27 +00:00
sta L0800,y
dey
dex
bpl L8BC1
2018-01-30 16:57:36 +00:00
lda grafport2::width
2017-10-12 15:04:27 +00:00
sec
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_x1
2017-10-12 15:04:27 +00:00
sta L8D54
2018-01-30 16:57:36 +00:00
lda grafport2::width+1
sbc grafport2::cliprect_x1+1
2017-10-12 15:04:27 +00:00
sta L8D55
2018-01-30 16:57:36 +00:00
lda grafport2::height
2017-10-12 15:04:27 +00:00
sec
2018-01-30 16:57:36 +00:00
sbc grafport2::cliprect_y1
2017-10-12 15:04:27 +00:00
sta L8D56
2018-01-30 16:57:36 +00:00
lda grafport2::height+1
sbc grafport2::cliprect_y1+1
2017-10-12 15:04:27 +00:00
sta L8D57
lda $0858
clc
adc L8D54
sta $085C
lda $0859
adc L8D55
sta $085D
lda $085A
clc
adc L8D56
sta $085E
lda $085B
adc L8D57
sta $085F
lda #$00
sta L8D4E
sta L8D4F
sta L8D4D
lda $0858
sec
sbc L0800
sta L8D50
lda $0859
sbc $0801
sta L8D51
lda $085A
sec
sbc $0802
sta L8D52
lda $085B
sbc $0803
sta L8D53
bit L8D51
bpl L8C6A
lda #$80
sta L8D4E
lda L8D50
eor #$FF
sta L8D50
lda L8D51
eor #$FF
sta L8D51
inc L8D50
bne L8C6A
inc L8D51
L8C6A: bit L8D53
bpl L8C8C
lda #$80
sta L8D4F
lda L8D52
eor #$FF
sta L8D52
lda L8D53
eor #$FF
sta L8D53
inc L8D52
bne L8C8C
inc L8D53
L8C8C: lsr L8D51
ror L8D50
lsr L8D53
ror L8D52
lsr L8D55
ror L8D54
lsr L8D57
ror L8D56
lda #$0A
sec
sbc L8D4D
asl a
asl a
asl a
tax
bit L8D4E
bpl L8CC9
lda L0800
sec
sbc L8D50
sta L0800,x
lda $0801
sbc L8D51
sta $0801,x
jmp L8CDC
L8CC9: lda L0800
clc
adc L8D50
sta L0800,x
lda $0801
adc L8D51
sta $0801,x
L8CDC: bit L8D4F
bpl L8CF7
lda $0802
sec
sbc L8D52
sta $0802,x
lda $0803
sbc L8D53
sta $0803,x
jmp L8D0A
L8CF7: lda $0802
clc
adc L8D52
sta $0802,x
lda $0803
adc L8D53
sta $0803,x
L8D0A: lda L0800,x
clc
adc L8D54
sta $0804,x
lda $0801,x
adc L8D55
sta $0805,x
lda $0802,x
clc
adc L8D56
sta $0806,x
lda $0803,x
adc L8D57
sta $0807,x
inc L8D4D
lda L8D4D
cmp #$0A
beq L8D3D
jmp L8C8C
L8D3D: bit L8D4A
bmi L8D46
jsr L8D58
rts
L8D46: jsr L8DB3
2017-12-31 02:02:15 +00:00
rts
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
L8D4A: .byte 0
L8D4B: .byte 0
L8D4C: .byte 0
L8D4D: .byte 0
L8D4E: .byte 0
L8D4F: .byte 0
L8D50: .byte 0
L8D51: .byte 0
L8D52: .byte 0
L8D53: .byte 0
L8D54: .byte 0
L8D55: .byte 0
L8D56: .byte 0
L8D57: .byte 0
2018-01-21 03:33:15 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L8D58: lda #$00
sta L8DB2
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetPattern, checkerboard_pattern3
2017-10-12 15:04:27 +00:00
jsr L48FA
L8D6C: lda L8DB2
cmp #$0C
bcs L8D89
asl a
asl a
asl a
clc
adc #$07
tax
ldy #$07
L8D7C: lda L0800,x
2018-01-21 03:33:15 +00:00
sta rect_E230,y
2017-10-12 15:04:27 +00:00
dex
dey
bpl L8D7C
2018-01-21 03:33:15 +00:00
jsr draw_rect_E230
2017-10-12 15:04:27 +00:00
L8D89: lda L8DB2
sec
sbc #$02
bmi L8DA7
asl a
L8D92: asl a
asl a
clc
adc #$07
tax
ldy #$07
L8D9A: lda L0800,x
2018-01-21 03:33:15 +00:00
sta rect_E230,y
2017-10-12 15:04:27 +00:00
dex
dey
bpl L8D9A
2018-01-21 03:33:15 +00:00
jsr draw_rect_E230
2017-10-12 15:04:27 +00:00
L8DA7: inc L8DB2
lda L8DB2
cmp #$0E
bne L8D6C
rts
2017-12-31 20:32:47 +00:00
L8DB2: .byte 0
2018-01-21 03:33:15 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L8DB3: lda #$0B
sta L8E0F
2018-01-30 16:57:36 +00:00
jsr reset_grafport3
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetPattern, checkerboard_pattern3
2017-10-12 15:04:27 +00:00
jsr L48FA
L8DC7: lda L8E0F
bmi L8DE4
beq L8DE4
asl a
asl a
asl a
clc
adc #$07
tax
ldy #$07
L8DD7: lda L0800,x
2018-01-21 03:33:15 +00:00
sta rect_E230,y
2017-10-12 15:04:27 +00:00
dex
dey
bpl L8DD7
2018-01-21 03:33:15 +00:00
jsr draw_rect_E230
2017-10-12 15:04:27 +00:00
L8DE4: lda L8E0F
clc
adc #$02
cmp #$0E
bcs L8E04
asl a
2017-12-31 02:02:15 +00:00
asl a
2017-10-12 15:04:27 +00:00
asl a
clc
adc #$07
tax
ldy #$07
2018-01-21 03:33:15 +00:00
L8DF7: lda L0800,x
sta rect_E230,y
2017-10-12 15:04:27 +00:00
dex
dey
2018-01-21 03:33:15 +00:00
bpl L8DF7
jsr draw_rect_E230
2017-12-31 02:02:15 +00:00
L8E04: dec L8E0F
lda L8E0F
cmp #$FD
bne L8DC7
rts
2017-12-31 20:32:47 +00:00
L8E0F: .byte 0
2018-01-21 03:33:15 +00:00
;;; ==================================================
.proc draw_rect_E230
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, rect_E230
2017-12-31 02:02:15 +00:00
rts
2018-01-21 03:33:15 +00:00
.endproc
2017-12-31 02:02:15 +00:00
2018-01-19 17:00:24 +00:00
;;; ==================================================
;;; Dynamically load parts of Desktop2
;;; Call load_dynamic_routine or restore_dynamic_routine
2018-01-19 17:00:24 +00:00
;;; with A set to routine number (0-8); routine is loaded
;;; from DeskTop2 file to target address. Returns with
;;; minus flag set on failure.
;;; Routines are:
2018-01-20 02:55:15 +00:00
;;; 0 = disk copy - A$ 800,L$ 200
;;; 1 = format/erase disk - A$ 800,L$1400 call w/ A = 4 = format, A = 5 = erase
2018-01-19 17:00:24 +00:00
;;; 2 = part of selector actions - A$9000,L$1000
2018-01-20 02:55:15 +00:00
;;; 3 = common routines - A$5000,L$2000
;;; 4 = part of copy file - A$7000,L$ 800
;;; 5 = part of delete file - A$7000,L$ 800
;;; 6 = part of selector actions - L$7000,L$ 800
;;; 7 = restore 1 - A$5000,L$2800 (restore $5000...$77FF)
;;; 8 = restore 2 - A$9000,L$1000 (restore $9000...$9FFF)
;;;
;;; Routines 2-6 need appropriate "restore routines" applied when complete.
2018-01-19 17:00:24 +00:00
.proc load_dynamic_routine_impl
2018-01-19 17:00:24 +00:00
pos_table:
.dword $00012FE0,$000160E0,$000174E0,$000184E0,$0001A4E0
.dword $0001ACE0,$0001B4E0,$0000B780,$0000F780
len_table:
.word $0200,$1400,$1000,$2000,$0800,$0800,$0800,$2800,$1000
addr_table:
.addr $0800,$0800,$9000,$5000,$7000,$7000,$7000,$5000,$9000
2018-01-14 07:24:19 +00:00
2018-01-19 17:00:24 +00:00
.proc open_params
2018-01-14 07:24:19 +00:00
params: .byte 3
path: .addr str_desktop2
buffer: .addr $1C00
ref_num:.byte 0
.endproc
str_desktop2:
PASCAL_STRING "DeskTop2"
2018-01-14 07:58:16 +00:00
.proc set_mark_params
params: .byte 2
ref_num:.byte 0
pos: .faraddr 0
.endproc
2018-01-14 07:52:03 +00:00
2018-01-19 17:00:24 +00:00
.proc read_params
2018-01-14 07:52:03 +00:00
params: .byte 4
ref_num:.byte 0
buffer: .addr 0
request:.word 0
trans: .word 0
.endproc
2018-01-14 07:24:19 +00:00
2018-01-19 17:00:24 +00:00
.proc close_params
2018-01-14 07:24:19 +00:00
params: .byte 1
ref_num:.byte 0
.endproc
2018-01-20 03:41:20 +00:00
restore_flag:
.byte 0
2018-01-19 17:00:24 +00:00
;; Called with routine # in A
load: pha ; entry point with bit clear
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-20 03:41:20 +00:00
sta restore_flag
2018-01-19 17:00:24 +00:00
beq :+
restore:
pha
2018-01-19 17:00:24 +00:00
lda #$80 ; entry point with bit set
2018-01-20 03:41:20 +00:00
sta restore_flag
2018-01-19 17:00:24 +00:00
: pla
asl a ; y = A * 2 (to index into word table)
2017-10-12 15:04:27 +00:00
tay
2018-01-19 17:00:24 +00:00
asl a ; x = A * 4 (to index into dword table)
2017-10-12 15:04:27 +00:00
tax
2018-01-19 17:00:24 +00:00
lda pos_table,x
2018-01-14 07:58:16 +00:00
sta set_mark_params::pos
2018-01-19 17:00:24 +00:00
lda pos_table+1,x
2018-01-14 07:58:16 +00:00
sta set_mark_params::pos+1
2018-01-19 17:00:24 +00:00
lda pos_table+2,x
2018-01-14 07:58:16 +00:00
sta set_mark_params::pos+2
2018-01-19 17:00:24 +00:00
lda len_table,y
sta read_params::request
lda len_table+1,y
sta read_params::request+1
lda addr_table,y
sta read_params::buffer
lda addr_table+1,y
sta read_params::buffer+1
open: MLI_RELAY_CALL OPEN, open_params
beq :+
2018-01-23 16:33:12 +00:00
lda #warning_msg_insert_system_disk
ora restore_flag ; high bit set = no cancel
jsr show_warning_dialog_num
2018-01-19 17:00:24 +00:00
beq open
lda #$FF ; failed
2017-10-12 15:04:27 +00:00
rts
2018-01-19 17:00:24 +00:00
: lda open_params::ref_num
sta read_params::ref_num
2018-01-14 07:58:16 +00:00
sta set_mark_params::ref_num
MLI_RELAY_CALL SET_MARK, set_mark_params
2018-01-19 17:00:24 +00:00
MLI_RELAY_CALL READ, read_params
MLI_RELAY_CALL CLOSE, close_params
2017-10-12 15:04:27 +00:00
rts
2018-01-21 18:44:26 +00:00
.assert * = $8EFB, error, "Segment length mismatch"
PAD_TO $8F00
2018-01-19 17:00:24 +00:00
.endproc
load_dynamic_routine := load_dynamic_routine_impl::load
restore_dynamic_routine := load_dynamic_routine_impl::restore
2018-01-19 17:00:24 +00:00
;;; ==================================================
2017-10-12 15:04:27 +00:00
L8F00: jmp L8FC5
2018-01-21 22:35:37 +00:00
jmp rts2 ; rts
jmp rts2 ; rts
2017-10-12 15:04:27 +00:00
L8F09: jmp L92E7
L8F0C: jmp L8F9B
L8F0F: jmp L8FA1
L8F12: jmp L9571
L8F15: jmp L9213
L8F18: jmp L8F2A
L8F1B: jmp L8F5B
2018-01-21 22:35:37 +00:00
jmp rts2 ; rts
jmp rts2 ; rts
2017-10-12 15:04:27 +00:00
L8F24: jmp L8F7E
L8F27: jmp L8FB8
L8F2A: lda #$00
sta L9189
tsx
stx L9188
jsr LA248
jsr L993E
jsr LA271
jsr L9968
L8F3F: lda #$FF
sta $E05B
lda #$00
sta $E05C
jsr L9A0D
jsr L917F
L8F4F: jsr L91E8
lda #$00
rts
jsr L91D5
jmp L8F4F
L8F5B: lda #$00
sta L9189
tsx
stx L9188
jsr LA248
lda #$00
jsr L9E7E
jsr LA271
jsr L9182
jsr L9EBF
jsr L9EDB
jsr L917F
jmp L8F4F
L8F7E: lda #$80
sta L918C
lda #$C0
sta L9189
tsx
stx L9188
jsr LA248
jsr L9984
jsr LA271
jsr L99BC
jmp L8F3F
L8F9B: jsr L8FDD
jmp L8F4F
L8FA1: jsr L8FE1
jmp L8F4F
L8FA7: asl a
tay
lda file_address_table,y
2018-01-17 15:41:23 +00:00
sta $06
lda file_address_table+1,y
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
rts
L8FB8: lda #$00
sta L918C
lda #$C0
sta L9189
jmp L8FEB
2018-01-24 23:39:12 +00:00
L8FC5: lda LEBFC
2017-10-12 15:04:27 +00:00
cmp #$01
bne L8FD0
lda #$80
bne L8FD2
L8FD0: lda #$00
L8FD2: sta L918A
lda #$00
sta L9189
jmp L8FEB
L8FDD: lda #$00
beq L8FE3
L8FE1: lda #$80
L8FE3: sta L918B
lda #$80
sta L9189
L8FEB: tsx
stx L9188
lda #$00
sta $E05C
jsr L91D5
lda L9189
beq L8FFF
jmp L908C
L8FFF: bit L918A
bpl L9011
lda $DF20
2018-01-01 05:16:41 +00:00
beq L900C
2017-10-12 15:04:27 +00:00
jmp L908C
L900C: pla
pla
2018-01-20 22:31:48 +00:00
jmp JT_EJECT
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
L9011: lda LEBFC
2017-10-12 15:04:27 +00:00
bpl L9032
and #$7F
asl a
tax
lda window_address_table,x
2017-10-12 15:04:27 +00:00
sta $08
lda window_address_table+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
2018-01-21 22:35:37 +00:00
lda #<L917B
2018-01-17 15:41:23 +00:00
sta $06
2018-01-21 22:35:37 +00:00
lda #>L917B
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
jsr L91A0
jmp L9076
L9032: jsr L8FA7
and #$0F
beq L9051
asl a
tax
lda window_address_table,x
2017-10-12 15:04:27 +00:00
sta $08
lda window_address_table+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
2018-01-24 23:39:12 +00:00
lda LEBFC
2017-10-12 15:04:27 +00:00
jsr L918E
jsr L91A0
jmp L9076
2018-01-24 23:39:12 +00:00
L9051: lda LEBFC
2017-10-12 15:04:27 +00:00
jsr L918E
ldy #$01
lda #$2F
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta L906D
sta $E00A,y
L9066: iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E00A,y
2018-01-21 22:35:37 +00:00
L906D := *+1
cpy #$00 ; self-modified
2017-10-12 15:04:27 +00:00
bne L9066
ldy #$01
lda #$20
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
L9076: ldy #$FF
L9078: iny
lda $E00A,y
2018-01-16 04:33:32 +00:00
sta LDFC9,y
2017-10-12 15:04:27 +00:00
cpy $E00A
bne L9078
2018-01-16 04:33:32 +00:00
lda LDFC9
2017-10-12 15:04:27 +00:00
beq L908C
2018-01-16 04:33:32 +00:00
dec LDFC9
2017-10-12 15:04:27 +00:00
L908C: lda #$00
sta L97E4
jsr LA248
bit L9189
bvs L90B4
bmi L90AE
bit L918A
bmi L90A6
jsr L993E
jmp L90DE
L90A6: lda #$06
jsr L9E7E
jmp L90DE
L90AE: jsr LA059
jmp L90DE
L90B4: jsr LA1E4
jmp L90DE
L90BA: bit L9189
bvs L90D8
bmi L90D2
bit L918A
bmi L90CC
jsr L9968
jmp L90DE
L90CC: jsr L9EBF
jmp L90DE
L90D2: jsr LA0DF
jmp L90DE
L90D8: jsr LA241
jmp L90DE
L90DE: jsr L91F5
lda is_file_selected
2017-10-12 15:04:27 +00:00
bne L90E9
jmp L9168
L90E9: ldx #$00
stx L917A
L90EE: jsr L91F5
ldx L917A
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
cmp #$01
beq L9140
jsr L918E
jsr L91A0
lda #$0A
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda #$E0
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
beq L9114
sec
sbc #$01
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
L9114: lda L97E4
beq L913D
bit L9189
bmi L912F
bit L918A
bmi L9129
jsr L9A01
jmp L9140
L9129: jsr L9EDB
jmp L9140
L912F: bvs L9137
jsr LA114
jmp L9140
L9137: jsr LA271
jmp L9140
L913D: jsr LA271
L9140: inc L917A
ldx L917A
cpx is_file_selected
2017-10-12 15:04:27 +00:00
bne L90EE
lda L97E4
bne L9168
inc L97E4
bit L9189
bmi L915D
bit L918A
bpl L9165
L915D: jsr L9182
bit L9189
bvs L9168
L9165: jmp L90BA
L9168: jsr L917F
2018-01-24 23:39:12 +00:00
lda LEBFC
2017-10-12 15:04:27 +00:00
jsr L918E
ldy #$01
lda #$20
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda #$00
rts
2017-12-31 20:32:47 +00:00
L917A: .byte 0
2018-01-21 22:35:37 +00:00
L917B: .byte 0
2018-01-05 04:27:15 +00:00
;; Dynamically constructed jump table???
L917D := *+1
2018-01-17 03:36:54 +00:00
L917C: jmp dummy0000
2018-01-05 04:27:15 +00:00
L9180 := *+1
2018-01-17 03:36:54 +00:00
L917F: jmp dummy0000
2018-01-05 04:27:15 +00:00
L9183 := *+1
2018-01-17 03:36:54 +00:00
L9182: jmp dummy0000
2018-01-05 04:27:15 +00:00
L9186 := *+1
2018-01-17 03:36:54 +00:00
L9185: jmp dummy0000
2018-01-05 04:27:15 +00:00
2017-12-31 20:32:47 +00:00
L9188: .byte 0
L9189: .byte 0
L918A: .byte 0
L918B: .byte 0
L918C: .byte 0
L918D: .byte 0
2017-10-12 15:04:27 +00:00
L918E: asl a
tay
lda file_address_table,y
2017-10-12 15:04:27 +00:00
clc
adc #$09
2018-01-17 15:41:23 +00:00
sta $06
lda file_address_table+1,y
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
rts
L91A0: ldx #$00
ldy #$00
lda ($08),y
beq L91B6
sta L91B3
L91AB: iny
inx
lda ($08),y
sta $E00A,x
2018-01-21 22:35:37 +00:00
L91B3 := *+1
cpy #0 ; self-modified
2017-10-12 15:04:27 +00:00
bne L91AB
L91B6: inx
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $E00A,x
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
beq L91D1
sta L91CE
iny
L91C6: iny
inx
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $E00A,x
.byte $C0
2017-12-31 20:32:47 +00:00
L91CE: .byte 0
2017-10-12 15:04:27 +00:00
bne L91C6
L91D1: stx $E00A
rts
2018-01-30 16:57:36 +00:00
L91D5: yax_call JT_MGTK_RELAY, MGTK::InitPort, grafport3
yax_call JT_MGTK_RELAY, MGTK::SetPort, grafport3
2017-10-12 15:04:27 +00:00
rts
2018-01-20 22:31:48 +00:00
L91E8: jsr JT_REDRAW_ALL
2018-01-25 04:20:39 +00:00
yax_call JT_DESKTOP_RELAY, $C, 0
2017-10-12 15:04:27 +00:00
rts
2018-01-21 19:47:40 +00:00
L91F5: lda #<L9211
2017-10-12 15:04:27 +00:00
sta $08
2018-01-21 19:47:40 +00:00
lda #>L9211
sta $08+1
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L9210
asl a
tax
lda window_address_table,x
2017-10-12 15:04:27 +00:00
sta $08
lda window_address_table+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
lda #$00
L9210: rts
2018-01-21 19:47:40 +00:00
L9211: .addr 0
L9213: lda is_file_selected
2017-10-12 15:04:27 +00:00
bne L9219
rts
L9219: ldx is_file_selected
2017-10-12 15:04:27 +00:00
stx L0800
dex
L9220: lda selected_file_index,x
2017-10-12 15:04:27 +00:00
sta $0801,x
dex
bpl L9220
2018-01-20 18:57:25 +00:00
jsr JT_CLEAR_SELECTION
2017-10-12 15:04:27 +00:00
ldx #$00
stx L924A
L9231: ldx L924A
lda $0801,x
cmp #$01
beq L923E
jsr L924B
L923E: inc L924A
ldx L924A
cpx L0800
bne L9231
rts
2017-12-31 20:32:47 +00:00
L924A: .byte 0
2017-10-12 15:04:27 +00:00
L924B: sta L9254
ldy #$00
L9250: lda $E1A0,y
.byte $C9
2017-12-31 20:32:47 +00:00
L9254: .byte 0
2017-10-12 15:04:27 +00:00
beq L9260
2018-01-15 04:55:54 +00:00
cpy DEVCNT
2017-10-12 15:04:27 +00:00
beq L925F
iny
bne L9250
L925F: rts
2018-01-15 04:55:54 +00:00
L9260: lda DEVLST,y
2017-10-12 15:04:27 +00:00
sta L92C7
ldx #$11
lda L92C7
and #$80
beq L9271
ldx #$21
L9271: stx L9284
lda L92C7
and #$70
lsr a
lsr a
lsr a
clc
adc L9284
sta L9284
2018-01-01 05:16:41 +00:00
L9284 := *+1
2018-01-15 04:55:54 +00:00
lda $BF00 ; self-modified
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
ldy #$07
2018-01-21 19:55:06 +00:00
lda ($06),y
bne L925F
ldy #$FB
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
bne L925F
ldy #$FF
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
clc
adc #$03
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda L92C7
pha
rol a
pla
php
and #$20
lsr a
lsr a
lsr a
lsr a
plp
adc #$01
sta L92C1
jsr L92BD
2018-01-01 05:16:41 +00:00
.byte $04
.addr L92C0
rts
2018-01-17 15:41:23 +00:00
L92BD: jmp ($06)
2017-10-12 15:04:27 +00:00
2018-01-21 22:35:37 +00:00
L92C0: .byte 3
L92C1: .byte $00
.addr L92C5
.byte 4
L92C5: .byte $00,$00
2018-01-17 04:16:31 +00:00
L92C7: .byte $00,$00
2018-01-17 20:41:21 +00:00
.proc get_file_info_params5
params: .byte $A
path: .addr $220
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
L92DB: .byte 0,0
2018-01-18 01:35:35 +00:00
.proc block_params
params: .byte $03
unit_num:.byte $0
buffer: .addr $0800
block_num:.word $A
.endproc
2017-12-31 02:02:15 +00:00
L92E3: .byte $00
L92E4: .byte $00
L92E5: .byte $00
L92E6: .byte $00
L92E7: lda is_file_selected
2017-10-12 15:04:27 +00:00
bne L92ED
rts
L92ED: lda #$00
sta L92E6
jsr L91D5
L92F5: ldx L92E6
cpx is_file_selected
2017-10-12 15:04:27 +00:00
bne L9300
jmp L9534
L9300: lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L9331
asl a
tax
lda window_address_table,x
2017-10-12 15:04:27 +00:00
sta $08
lda window_address_table+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldx L92E6
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
jsr L91A0
ldy #$00
L931F: lda $E00A,y
2018-01-17 15:41:23 +00:00
sta $220,y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
cpy $220
2017-10-12 15:04:27 +00:00
bne L931F
2018-01-17 15:41:23 +00:00
dec $220
2017-10-12 15:04:27 +00:00
jmp L9356
L9331: ldx L92E6
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
cmp #$01
bne L933E
jmp L952E
L933E: jsr L918E
ldy #$00
2018-01-17 15:41:23 +00:00
L9343: lda ($06),y
sta $220,y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
cpy $220
2017-10-12 15:04:27 +00:00
bne L9343
2018-01-17 15:41:23 +00:00
dec $220
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $0221
2018-01-23 02:09:15 +00:00
L9356: yax_call JT_MLI_RELAY, GET_FILE_INFO, get_file_info_params5
2017-10-12 15:04:27 +00:00
beq L9366
jsr LA49B
beq L9356
L9366: lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L9387
lda #$80
sta L92E3
lda L92E6
clc
adc #$01
cmp is_file_selected
2017-10-12 15:04:27 +00:00
beq L9381
inc L92E3
inc L92E3
L9381: jsr L953F
jmp L93DB
L9387: lda #$81
sta L92E3
lda L92E6
clc
adc #$01
cmp is_file_selected
2017-10-12 15:04:27 +00:00
beq L939D
inc L92E3
inc L92E3
L939D: jsr L953F
lda #$00
sta L942E
ldx L92E6
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
ldy #$0F
L93AD: cmp $E1A0,y
beq L93B8
dey
bpl L93AD
jmp L93DB
2018-01-15 04:55:54 +00:00
L93B8: lda DEVLST,y
2018-01-18 01:35:35 +00:00
sta block_params::unit_num
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, READ_BLOCK, block_params
2017-10-12 15:04:27 +00:00
bne L93DB
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, WRITE_BLOCK, block_params
2017-10-12 15:04:27 +00:00
cmp #$2B
bne L93DB
lda #$80
sta L942E
L93DB: ldx L92E6
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
lda #$01
sta L92E3
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
sta L92E4
2018-01-17 15:41:23 +00:00
lda $06+1
2017-10-12 15:04:27 +00:00
sta L92E5
jsr L953F
lda #$02
sta L92E3
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L9413
bit L942E
bmi L940C
lda #$00
sta L92E4
beq L9428
L940C: lda #$01
sta L92E4
bne L9428
2018-01-17 20:41:21 +00:00
L9413: lda get_file_info_params5::access
2017-10-12 15:04:27 +00:00
and #$C3
cmp #$C3
beq L9423
lda #$01
sta L92E4
bne L9428
L9423: lda #$00
sta L92E4
L9428: jsr L953F
jmp L942F
2017-12-31 20:32:47 +00:00
L942E: .byte 0
2017-10-12 15:04:27 +00:00
L942F: lda #$03
sta L92E3
lda #$00
2018-01-17 15:41:23 +00:00
sta $220
lda selected_window_index
2018-01-18 01:35:35 +00:00
bne L9472 ; ProDOS TRM 4.4.5:
lda get_file_info_params5::auxtype ; "When file information about a volume
sec ; directory is requested, the total
sbc get_file_info_params5::blocks ; number of blocks on the volume is
pha ; returned in the aux_type field and
lda get_file_info_params5::auxtype+1 ; the total blocks for all files is
sbc get_file_info_params5::blocks+1 ; returned in blocks_used."
2017-10-12 15:04:27 +00:00
tax
pla
jsr L4006
jsr L9549
ldx #$00
2018-01-12 18:01:28 +00:00
L9456: lda text_buffer2::data-1,x
2017-10-12 15:04:27 +00:00
cmp #$42
beq L9460
inx
bne L9456
2018-01-17 15:41:23 +00:00
L9460: stx $220
2018-01-24 04:11:38 +00:00
lda #'/'
2018-01-17 15:41:23 +00:00
sta $220,x
2017-10-12 15:04:27 +00:00
dex
2018-01-12 18:01:28 +00:00
L9469: lda text_buffer2::data-1,x
2018-01-17 15:41:23 +00:00
sta $220,x
2017-10-12 15:04:27 +00:00
dex
bne L9469
L9472: lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L9480
2018-01-17 20:41:21 +00:00
lda get_file_info_params5::auxtype
ldx get_file_info_params5::auxtype+1
2017-10-12 15:04:27 +00:00
jmp L9486
2018-01-17 20:41:21 +00:00
L9480: lda get_file_info_params5::blocks
ldx get_file_info_params5::blocks+1
2017-10-12 15:04:27 +00:00
L9486: jsr L4006
jsr L9549
2018-01-17 15:41:23 +00:00
ldx $220
2017-10-12 15:04:27 +00:00
ldy #$00
L9491: lda $E6EC,y
sta $0221,x
inx
iny
2018-01-12 18:01:28 +00:00
cpy text_buffer2::length
2017-10-12 15:04:27 +00:00
bne L9491
tya
clc
2018-01-17 15:41:23 +00:00
adc $220
sta $220
ldx $220
L94A9: lda $220,x
2018-01-16 04:33:32 +00:00
sta LDFC9,x
2017-10-12 15:04:27 +00:00
dex
bpl L94A9
2018-01-24 04:11:38 +00:00
lda #<$DFC9
2017-10-12 15:04:27 +00:00
sta L92E4
2018-01-24 04:11:38 +00:00
lda #>$DFC9
sta L92E4+1
2017-10-12 15:04:27 +00:00
jsr L953F
lda #$04
sta L92E3
2018-01-17 20:41:21 +00:00
lda get_file_info_params5::cdate
2018-01-21 19:47:40 +00:00
sta date
2018-01-17 20:41:21 +00:00
lda get_file_info_params5::cdate+1
2018-01-21 19:47:40 +00:00
sta date+1
2017-10-12 15:04:27 +00:00
jsr L4009
2018-01-24 04:11:38 +00:00
lda #<$E6EB
2017-10-12 15:04:27 +00:00
sta L92E4
2018-01-24 04:11:38 +00:00
lda #>$E6EB
sta L92E4+1
2017-10-12 15:04:27 +00:00
jsr L953F
lda #$05
sta L92E3
2018-01-17 20:41:21 +00:00
lda get_file_info_params5::mdate
2018-01-21 19:47:40 +00:00
sta date
2018-01-17 20:41:21 +00:00
lda get_file_info_params5::mdate+1
2018-01-21 19:47:40 +00:00
sta date+1
2017-10-12 15:04:27 +00:00
jsr L4009
2018-01-24 04:11:38 +00:00
lda #<$E6EB
2017-10-12 15:04:27 +00:00
sta L92E4
2018-01-24 04:11:38 +00:00
lda #>$E6EB
sta L92E4+1
2017-10-12 15:04:27 +00:00
jsr L953F
lda #$06
sta L92E3
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L9519
ldx L953A
L950E: lda L953A,x
2018-01-16 04:33:32 +00:00
sta LDFC5,x
2017-10-12 15:04:27 +00:00
dex
bpl L950E
bmi L951F
2018-01-17 20:41:21 +00:00
L9519: lda get_file_info_params5::type
2017-10-12 15:04:27 +00:00
jsr L402D
2018-01-24 04:11:38 +00:00
L951F: lda #<$DFC5
2017-10-12 15:04:27 +00:00
sta L92E4
2018-01-24 04:11:38 +00:00
lda #>$DFC5
sta L92E4+1
2017-10-12 15:04:27 +00:00
jsr L953F
bne L9534
L952E: inc L92E6
jmp L92F5
L9534: lda #$00
2018-01-16 04:33:32 +00:00
sta LDFC9
2017-10-12 15:04:27 +00:00
rts
2017-12-31 03:21:34 +00:00
L953A: PASCAL_STRING " VOL"
2018-01-21 22:35:37 +00:00
2018-01-23 02:09:15 +00:00
L953F: yax_call launch_dialog, index_get_info_dialog, L92E3
2017-10-12 15:04:27 +00:00
rts
L9549: ldx #$00
L954B: lda $E6EC,x
cmp #$20
bne L9555
inx
bne L954B
L9555: ldy #$00
dex
L9558: lda $E6EC,x
sta $E6EC,y
iny
inx
2018-01-12 18:01:28 +00:00
cpx text_buffer2::length
2017-10-12 15:04:27 +00:00
bne L9558
2018-01-12 18:01:28 +00:00
sty text_buffer2::length
2017-10-12 15:04:27 +00:00
rts
2018-01-18 01:49:27 +00:00
.proc rename_params
params: .byte 2
path: .addr $220
newpath:.addr $1FC0
.endproc
2017-12-31 20:32:47 +00:00
L956E: .byte 0
.byte 0
2017-10-12 15:04:27 +00:00
L9570: .byte $1F
L9571: lda #$00
sta L9706
L9576: lda L9706
cmp is_file_selected
2017-10-12 15:04:27 +00:00
bne L9581
lda #$00
rts
L9581: ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
cmp #$01
bne L9591
inc L9706
jmp L9576
L9591: lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L95C2
asl a
tax
lda window_address_table,x
2017-10-12 15:04:27 +00:00
sta $08
lda window_address_table+1,x
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
jsr L91A0
ldy #$00
L95B0: lda $E00A,y
2018-01-17 15:41:23 +00:00
sta $220,y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
cpy $220
2017-10-12 15:04:27 +00:00
bne L95B0
2018-01-17 15:41:23 +00:00
dec $220
2017-10-12 15:04:27 +00:00
jmp L95E0
L95C2: ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
ldy #$00
2018-01-17 15:41:23 +00:00
L95CD: lda ($06),y
sta $220,y
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
cpy $220
2017-10-12 15:04:27 +00:00
bne L95CD
2018-01-17 15:41:23 +00:00
dec $220
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $0221
L95E0: ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L95EE: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $1F12,y
dey
bpl L95EE
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
dey
sec
sbc #$02
sta $1F00
2018-01-17 15:41:23 +00:00
L9602: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $1EFF,y
dey
cpy #$01
bne L9602
lda #$00
jsr L96F8
L9611: lda #$80
jsr L96F8
beq L962F
L9618: ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
ldy $1F12
L9624: lda $1F12,y
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
bpl L9624
lda #$FF
rts
L962F: sty $08
sty L9707
2018-01-21 19:47:40 +00:00
stx $08+1
2017-10-12 15:04:27 +00:00
stx L9708
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq L964D
asl a
tax
lda window_address_table,x
2018-01-17 15:41:23 +00:00
sta $06
lda window_address_table+1,x
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
jmp L9655
L964D: lda #$05
2018-01-17 15:41:23 +00:00
sta $06
2017-10-12 15:04:27 +00:00
lda #$97
2018-01-17 15:41:23 +00:00
sta $06+1
2017-10-12 15:04:27 +00:00
L9655: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
L965A: lda ($06),y
2017-10-12 15:04:27 +00:00
sta $1FC0,y
dey
bpl L965A
inc $1FC0
ldx $1FC0
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $1FC0,x
ldy #$00
lda ($08),y
sta L9709
L9674: inx
iny
lda ($08),y
sta $1FC0,x
cpy L9709
bne L9674
stx $1FC0
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, RENAME, rename_params
2017-10-12 15:04:27 +00:00
beq L969E
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
bne L9696
jmp L9611
L9696: lda #$40
jsr L96F8
jmp L9618
L969E: lda #$40
jsr L96F8
ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
sta $E22B
2018-01-24 04:11:38 +00:00
yax_call JT_DESKTOP_RELAY, $E, $E22B
2017-10-12 15:04:27 +00:00
lda L9707
sta $08
lda L9708
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldx L9706
lda selected_file_index,x
2017-10-12 15:04:27 +00:00
jsr L918E
ldy #$00
lda ($08),y
clc
adc #$02
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
lda ($08),y
tay
2018-01-17 15:41:23 +00:00
inc $06
2017-10-12 15:04:27 +00:00
bne L96DA
2018-01-17 15:41:23 +00:00
inc $06+1
2017-10-12 15:04:27 +00:00
L96DA: lda ($08),y
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
dey
bne L96DA
2018-01-17 15:41:23 +00:00
dec $06
lda $06
2017-10-12 15:04:27 +00:00
cmp #$FF
bne L96EB
2018-01-17 15:41:23 +00:00
dec $06+1
L96EB: lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-24 04:11:38 +00:00
lda #' '
2018-01-17 15:41:23 +00:00
sta ($06),y
2017-10-12 15:04:27 +00:00
inc L9706
jmp L9576
L96F8: sta L956E
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_rename_dialog, L956E
2017-10-12 15:04:27 +00:00
rts
2017-12-31 02:02:15 +00:00
.byte $00
L9706: .byte $00
L9707: .byte $00
L9708: .byte $00
2018-01-17 14:59:34 +00:00
L9709: .byte $00
2018-01-18 01:35:35 +00:00
.proc open_params3
params: .byte 3
path: .addr $220
buffer: .addr $800
ref_num:.byte 0
.endproc
2018-01-18 01:49:27 +00:00
.proc read_params3
params: .byte 4
ref_num:.byte 0
buffer: .addr L9718
request:.word 4
trans: .word 0
.endproc
L9718: .res 4, 0
2018-01-18 01:35:35 +00:00
.proc close_params6
params: .byte 1
ref_num:.byte 0
.endproc
2018-01-18 01:49:27 +00:00
.proc read_params4
params: .byte 4
ref_num:.byte 0
buffer: .addr L97AD
request:.word $27
trans: .word 0
.endproc
.proc read_params5
params: .byte 4
ref_num:.byte 0
buffer: .addr L972E
request:.word 5
trans: .word 0
.endproc
L972E: .res 5, 0
.res 4, 0
2018-01-17 14:59:34 +00:00
2018-01-18 02:07:22 +00:00
.proc close_params5
params: .byte 1
ref_num:.byte 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 01:35:35 +00:00
.proc close_params3
params: .byte 1
ref_num:.byte 0
.endproc
.proc destroy_params
params: .byte 1
path: .addr $0220
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 01:49:27 +00:00
.proc open_params4
params: .byte 3
path: .addr $220
buffer: .addr $0D00
ref_num:.byte 0
.endproc
2018-01-18 02:07:22 +00:00
.proc open_params5
params: .byte 3
path: .addr $1FC0
buffer: .addr $1100
ref_num:.byte 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 02:07:22 +00:00
.proc read_params6
params: .byte 4
ref_num:.byte 0
buffer: .addr $1500
request:.word $AC0
trans: .word 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 02:07:22 +00:00
.proc write_params
params: .byte 4
ref_num:.byte 0
buffer: .addr $1500
request:.word $AC0
trans: .word 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 02:07:22 +00:00
.proc create_params3
params: .byte 7
path: .addr $1FC0
2018-01-20 03:41:20 +00:00
access: .byte %11000011
2018-01-18 02:07:22 +00:00
type: .byte 0
auxtype:.word 0
storage:.byte 0
cdate: .word 0
ctime: .word 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 01:49:27 +00:00
.proc create_params2
params: .byte 7
path: .addr $1FC0
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
cdate: .word 0
ctime: .word 0
.endproc
.byte $00,$00
2018-01-18 01:54:54 +00:00
.proc file_info_params2
params: .byte $A
path: .addr $220
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
.byte 0
2018-01-17 14:59:34 +00:00
2018-01-18 01:54:54 +00:00
.proc file_info_params3
2018-01-18 01:35:35 +00:00
params: .byte $A
path: .addr $1FC0
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
.byte 0
2018-01-17 14:59:34 +00:00
2018-01-18 01:35:35 +00:00
.proc set_eof_params
params: .byte 2
ref_num:.byte 0
eof: .faraddr 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 01:35:35 +00:00
.proc mark_params
params: .byte 2
ref_num:.byte 0
position: .faraddr 0
.endproc
2018-01-17 14:59:34 +00:00
2018-01-18 02:07:22 +00:00
.proc mark_params2
params: .byte 2
ref_num:.byte 0
position: .faraddr 0
.endproc
.proc on_line_params2
params: .byte 2
unit_num:.byte 0
buffer: .addr $800
.endproc
2017-12-31 02:02:15 +00:00
L97AD: .byte $00
L97AE: .byte $00,$00,$00,$00,$00,$00,$00,$00
.byte $00,$00,$00,$00,$00,$00,$00
L97BD: .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
.byte $00,$00,$00,$00,$00,$00,$00,$00
2018-01-21 22:35:37 +00:00
L97DD: .addr L9B36
L97DF: .addr L9B33
L97E1: .addr rts2
rts2: rts
2017-12-31 02:02:15 +00:00
L97E4: .byte $00
2017-10-12 15:04:27 +00:00
L97E5: ldx $E10C
lda $E061
sta $E062,x
inx
stx $E10C
rts
L97F3: ldx $E10C
dex
lda $E062,x
sta $E061
stx $E10C
rts
L9801: lda #$00
sta $E05F
sta $E10D
2018-01-23 02:09:15 +00:00
L9809: yax_call JT_MLI_RELAY, OPEN, open_params3
2017-10-12 15:04:27 +00:00
beq L981E
ldx #$80
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT
2017-10-12 15:04:27 +00:00
beq L9809
jmp LA39F
2018-01-18 01:35:35 +00:00
L981E: lda open_params3::ref_num
2017-10-12 15:04:27 +00:00
sta $E060
2018-01-18 01:49:27 +00:00
sta read_params3::ref_num
2018-01-23 02:09:15 +00:00
L9827: yax_call JT_MLI_RELAY, READ, read_params3
2017-10-12 15:04:27 +00:00
beq L983C
ldx #$80
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT
2017-10-12 15:04:27 +00:00
beq L9827
jmp LA39F
L983C: jmp L985B
L983F: lda $E060
2018-01-18 01:35:35 +00:00
sta close_params6::ref_num
2018-01-23 02:09:15 +00:00
L9845: yax_call JT_MLI_RELAY, CLOSE, close_params6
2017-10-12 15:04:27 +00:00
beq L985A
ldx #$80
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT
2017-10-12 15:04:27 +00:00
beq L9845
jmp LA39F
L985A: rts
L985B: inc $E05F
lda $E060
2018-01-18 01:49:27 +00:00
sta read_params4::ref_num
2018-01-23 02:09:15 +00:00
L9864: yax_call JT_MLI_RELAY, READ, read_params4
2017-10-12 15:04:27 +00:00
beq L987D
cmp #$4C
beq L989F
ldx #$80
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT
2017-10-12 15:04:27 +00:00
beq L9864
jmp LA39F
L987D: inc $E10D
lda $E10D
cmp $E05E
bcc L989C
lda #$00
sta $E10D
lda $E060
2018-01-18 01:49:27 +00:00
sta read_params5::ref_num
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, READ, read_params5
2017-10-12 15:04:27 +00:00
L989C: lda #$00
rts
L989F: lda #$FF
rts
L98A2: lda $E05F
sta $E061
jsr L983F
jsr L97E5
jsr LA2FD
jmp L9801
L98B4: jsr L983F
jsr L992A
jsr LA322
jsr L97F3
jsr L9801
jsr L98C9
jmp L9927
L98C9: lda $E05F
cmp $E061
beq L98D7
jsr L985B
jmp L98C9
L98D7: rts
L98D8: lda #$00
sta $E05D
jsr L9801
L98E0: jsr L985B
bne L9912
lda L97AD
beq L98E0
lda L97AD
sta L992D
and #$0F
sta L97AD
lda #$00
sta L9923
jsr L9924
lda L9923
bne L98E0
lda L97BD
cmp #$0F
bne L98E0
jsr L98A2
inc $E05D
jmp L98E0
L9912: lda $E05D
beq L9920
jsr L98B4
dec $E05D
jmp L98E0
L9920: jmp L983F
2017-12-31 20:32:47 +00:00
L9923: .byte 0
2017-10-12 15:04:27 +00:00
L9924: jmp (L97DD)
L9927: jmp (L97DF)
L992A: jmp (L97E1)
2017-12-31 02:02:15 +00:00
L992D: .byte $00,$00,$00,$00
2018-01-21 22:35:37 +00:00
L9931: .addr L9B36
.addr L9B33
.addr rts2
2018-01-24 05:52:53 +00:00
L9937: .byte 0
2018-01-21 22:35:37 +00:00
L9938: .addr 0
.addr $220
.addr $1FC0
2017-10-12 15:04:27 +00:00
L993E: lda #$00
sta L9937
2018-01-21 22:35:37 +00:00
lda #<L995A
2017-10-12 15:04:27 +00:00
sta L917D
2018-01-21 22:35:37 +00:00
lda #>L995A
2018-01-05 04:27:15 +00:00
sta L917D+1
2018-01-21 22:35:37 +00:00
lda #<L997C
2017-10-12 15:04:27 +00:00
sta L9180
2018-01-21 22:35:37 +00:00
lda #>L997C
2018-01-05 04:27:15 +00:00
sta L9180+1
2017-10-12 15:04:27 +00:00
jmp L9BBF
2018-01-21 22:35:37 +00:00
L995A: sta L9938
stx L9938+1
2017-10-12 15:04:27 +00:00
lda #$01
sta L9937
jmp L9BBF
L9968: ldy #$05
L996A: lda L9931,y
sta L97DD,y
dey
bpl L996A
lda #$00
sta LA425
sta L918D
rts
2018-01-21 22:35:37 +00:00
L997C: lda #$05
2017-10-12 15:04:27 +00:00
sta L9937
jmp L9BBF
L9984: lda #$00
sta L9937
2018-01-24 05:52:53 +00:00
lda #<$99A7 ; ???
2017-10-12 15:04:27 +00:00
sta L917D
2018-01-24 04:11:38 +00:00
lda #>$99A7
2018-01-05 04:27:15 +00:00
sta L917D+1
2018-01-24 05:52:53 +00:00
lda #<$99DC ; ???
2017-10-12 15:04:27 +00:00
sta L9180
2018-01-24 04:11:38 +00:00
lda #>$99DC
2018-01-05 04:27:15 +00:00
sta L9180+1
2018-01-24 23:39:12 +00:00
yax_call launch_dialog, index_download_dialog, L9937
2017-10-12 15:04:27 +00:00
rts
sta L9938
2018-01-21 22:35:37 +00:00
stx L9938+1
2017-10-12 15:04:27 +00:00
lda #$01
sta L9937
2018-01-24 23:39:12 +00:00
yax_call launch_dialog, index_download_dialog, L9937
2017-10-12 15:04:27 +00:00
rts
L99BC: lda #$80
sta L918D
ldy #$05
L99C3: lda L9931,y
sta L97DD,y
dey
bpl L99C3
lda #$00
sta LA425
2018-01-24 05:37:41 +00:00
lda #<$99EB
2017-10-12 15:04:27 +00:00
sta L9186
2018-01-24 05:37:41 +00:00
lda #>$99EB
2018-01-05 04:27:15 +00:00
sta L9186+1
2017-10-12 15:04:27 +00:00
rts
lda #$03
sta L9937
2018-01-24 23:39:12 +00:00
yax_call launch_dialog, index_download_dialog, L9937
2017-10-12 15:04:27 +00:00
rts
lda #$04
sta L9937
2018-01-24 23:39:12 +00:00
yax_call launch_dialog, index_download_dialog, L9937
2017-10-12 15:04:27 +00:00
cmp #$02
bne L99FE
rts
L99FE: jmp LA39F
L9A01: lda #$80
sta $E05B
lda #$00
sta $E05C
beq L9A0F
L9A0D: lda #$FF
L9A0F: sta L9B31
lda #$02
sta L9937
jsr LA379
bit L9189
bvc L9A22
jsr L9BC9
L9A22: bit $E05B
bpl L9A70
bvs L9A50
lda L9B31
bne L9A36
lda selected_window_index
2017-10-12 15:04:27 +00:00
bne L9A36
jmp L9B28
L9A36: ldx $1FC0
ldy L9B32
dey
L9A3D: iny
inx
2018-01-17 15:41:23 +00:00
lda $220,y
2017-10-12 15:04:27 +00:00
sta $1FC0,x
2018-01-17 15:41:23 +00:00
cpy $220
2017-10-12 15:04:27 +00:00
bne L9A3D
stx $1FC0
jmp L9A70
L9A50: ldx $1FC0
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $1FC1,x
inc $1FC0
ldy #$00
ldx $1FC0
L9A60: iny
inx
lda $E04B,y
sta $1FC0,x
cpy $E04B
bne L9A60
stx $1FC0
2018-01-23 02:09:15 +00:00
L9A70: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq L9A81
jsr LA49B
jmp L9A70
2018-01-18 01:54:54 +00:00
L9A81: lda file_info_params2::storage
2018-01-20 03:41:20 +00:00
cmp #ST_VOLUME_DIRECTORY
2017-10-12 15:04:27 +00:00
beq L9A90
2018-01-20 03:41:20 +00:00
cmp #ST_LINKED_DIRECTORY
2017-10-12 15:04:27 +00:00
beq L9A90
lda #$00
beq L9A95
L9A90: jsr LA2F1
lda #$FF
L9A95: sta L9B30
jsr LA40A
lda LA2EE
bne L9AA8
lda LA2ED
bne L9AA8
jmp LA39F
L9AA8: ldy #$07
2018-01-17 14:59:34 +00:00
L9AAA: lda file_info_params2,y
2018-01-18 01:49:27 +00:00
sta create_params2,y
2017-10-12 15:04:27 +00:00
dey
cpy #$02
bne L9AAA
2018-01-20 03:41:20 +00:00
lda #%11000011
2018-01-18 01:49:27 +00:00
sta create_params2::access
2017-10-12 15:04:27 +00:00
lda $E05B
beq L9B23
jsr L9C01
bcs L9B2C
ldy #$11
ldx #$0B
2018-01-17 14:59:34 +00:00
L9AC8: lda file_info_params2,y
2018-01-18 01:49:27 +00:00
sta create_params2,x
2017-10-12 15:04:27 +00:00
dex
dey
cpy #$0D
bne L9AC8
2018-01-18 01:49:27 +00:00
lda create_params2::storage
2018-01-20 03:41:20 +00:00
cmp #ST_VOLUME_DIRECTORY
2017-10-12 15:04:27 +00:00
bne L9AE0
2018-01-20 03:41:20 +00:00
lda #ST_LINKED_DIRECTORY
2018-01-18 01:49:27 +00:00
sta create_params2::storage
2018-01-23 02:09:15 +00:00
L9AE0: yax_call JT_MLI_RELAY, CREATE, create_params2
2017-10-12 15:04:27 +00:00
beq L9B23
cmp #$47
bne L9B1D
bit L918D
bmi L9B14
lda #$03
sta L9937
jsr L9BBF
pha
lda #$02
sta L9937
pla
cmp #$02
beq L9B14
cmp #$03
beq L9B2C
cmp #$04
bne L9B1A
lda #$80
sta L918D
L9B14: jsr LA426
jmp L9B23
L9B1A: jmp LA39F
L9B1D: jsr LA49B
jmp L9AE0
L9B23: lda L9B30
beq L9B2D
L9B28: jmp L98D8
2017-12-31 20:32:47 +00:00
.byte 0
2017-10-12 15:04:27 +00:00
L9B2C: rts
L9B2D: jmp L9CDA
2017-12-31 20:32:47 +00:00
L9B30: .byte 0
L9B31: .byte 0
L9B32: .byte 0
2018-01-21 22:35:37 +00:00
L9B33: jmp LA360
2017-10-12 15:04:27 +00:00
2018-01-21 22:35:37 +00:00
L9B36: jsr LA3D1
2017-10-12 15:04:27 +00:00
beq L9B3E
jmp LA39F
L9B3E: lda L97BD
cmp #$0F
bne L9B88
jsr LA2FD
2018-01-23 02:09:15 +00:00
L9B48: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq L9B59
jsr LA49B
jmp L9B48
L9B59: jsr LA33B
jsr LA40A
jsr LA2F1
lda LA2EE
bne L9B6F
lda LA2ED
bne L9B6F
jmp LA39F
L9B6F: jsr L9E19
bcs L9B7A
jsr LA322
jmp L9BBE
L9B7A: jsr LA360
jsr LA322
lda #$FF
sta L9923
jmp L9BBE
L9B88: jsr LA33B
jsr LA2FD
jsr LA40A
2018-01-23 02:09:15 +00:00
L9B91: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq L9BA2
jsr LA49B
jmp L9B91
L9BA2: jsr L9C01
bcc L9BAA
jmp LA39F
L9BAA: jsr LA322
jsr L9E19
bcs L9BBB
jsr LA2FD
jsr L9CDA
jsr LA322
L9BBB: jsr LA360
L9BBE: rts
2018-01-23 02:09:15 +00:00
L9BBF: yax_call launch_dialog, index_copy_file_dialog, L9937
2017-10-12 15:04:27 +00:00
rts
2018-01-23 02:09:15 +00:00
L9BC9: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params3
2017-10-12 15:04:27 +00:00
beq L9BDA
jsr LA497
jmp L9BC9
2018-01-18 01:35:35 +00:00
L9BDA: lda file_info_params3::auxtype
2017-10-12 15:04:27 +00:00
sec
2018-01-18 01:35:35 +00:00
sbc file_info_params3::blocks
2017-10-12 15:04:27 +00:00
sta L9BFF
2018-01-18 01:35:35 +00:00
lda file_info_params3::auxtype+1
sbc file_info_params3::blocks+1
2017-10-12 15:04:27 +00:00
sta L9C00
lda L9BFF
cmp LA2EF
lda L9C00
sbc LA2F0
bcs L9BFE
jmp L9185
L9BFE: rts
2017-12-31 20:32:47 +00:00
L9BFF: .byte 0
L9C00: .byte 0
2017-10-12 15:04:27 +00:00
L9C01: jsr L9C1A
bcc L9C19
lda #$04
sta L9937
jsr L9BBF
beq L9C13
jmp LA39F
L9C13: lda #$03
sta L9937
sec
L9C19: rts
2018-01-23 02:09:15 +00:00
L9C1A: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq L9C2B
jsr LA49B
jmp L9C1A
L9C2B: lda #$00
sta L9CD8
sta L9CD9
2018-01-23 02:09:15 +00:00
L9C33: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params3
2017-10-12 15:04:27 +00:00
beq L9C48
cmp #$46
beq L9C54
jsr LA497
jmp L9C33
2018-01-18 01:35:35 +00:00
L9C48: lda file_info_params3::blocks
2017-10-12 15:04:27 +00:00
sta L9CD8
2018-01-18 01:35:35 +00:00
lda file_info_params3::blocks+1
2017-10-12 15:04:27 +00:00
sta L9CD9
L9C54: lda $1FC0
sta L9CD6
ldy #$01
L9C5C: iny
cpy $1FC0
bcs L9CCC
lda $1FC0,y
cmp #$2F
bne L9C5C
tya
sta $1FC0
sta L9CD7
2018-01-23 02:09:15 +00:00
L9C70: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params3
2017-10-12 15:04:27 +00:00
beq L9C95
pha
lda L9CD6
sta $1FC0
pla
jsr LA497
jmp L9C70
lda L9CD7
sta $1FC0
jmp L9C70
jmp LA39F
2018-01-18 01:35:35 +00:00
L9C95: lda file_info_params3::auxtype
2017-10-12 15:04:27 +00:00
sec
2018-01-18 01:35:35 +00:00
sbc file_info_params3::blocks
2017-10-12 15:04:27 +00:00
sta L9CD4
2018-01-18 01:35:35 +00:00
lda file_info_params3::auxtype+1
sbc file_info_params3::blocks+1
2017-10-12 15:04:27 +00:00
sta L9CD5
lda L9CD4
clc
adc L9CD8
sta L9CD4
lda L9CD5
adc L9CD9
sta L9CD5
lda L9CD4
2018-01-18 01:54:54 +00:00
cmp file_info_params2::blocks
2017-10-12 15:04:27 +00:00
lda L9CD5
sbc file_info_params2::blocks+1
2017-10-12 15:04:27 +00:00
bcs L9CCC
sec
bcs L9CCD
L9CCC: clc
L9CCD: lda L9CD6
sta $1FC0
rts
2017-12-31 20:32:47 +00:00
L9CD4: .byte 0
L9CD5: .byte 0
L9CD6: .byte 0
L9CD7: .byte 0
L9CD8: .byte 0
L9CD9: .byte 0
2017-10-12 15:04:27 +00:00
L9CDA: jsr LA2F1
lda #$00
sta L9E17
sta L9E18
2018-01-18 01:35:35 +00:00
sta mark_params::position
sta mark_params::position+1
sta mark_params::position+2
2018-01-18 02:07:22 +00:00
sta mark_params2::position
sta mark_params2::position+1
sta mark_params2::position+2
2017-10-12 15:04:27 +00:00
jsr L9D62
jsr L9D74
jsr L9D81
beq L9D09
lda #$FF
sta L9E17
bne L9D0C
L9D09: jsr L9D9C
L9D0C: jsr L9DA9
bit L9E17
bpl L9D28
jsr L9E0D
L9D17: jsr L9D81
bne L9D17
jsr L9D9C
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, SET_MARK, mark_params2
2017-10-12 15:04:27 +00:00
L9D28: bit L9E18
bmi L9D51
jsr L9DE8
bit L9E17
bpl L9D0C
jsr L9E03
jsr L9D62
jsr L9D74
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, SET_MARK, mark_params
2017-10-12 15:04:27 +00:00
beq L9D0C
lda #$FF
sta L9E18
jmp L9D0C
L9D51: jsr L9E03
bit L9E17
bmi L9D5C
jsr L9E0D
L9D5C: jsr LA46D
jmp LA479
2018-01-23 02:09:15 +00:00
L9D62: yax_call JT_MLI_RELAY, OPEN, open_params4
2017-10-12 15:04:27 +00:00
beq L9D73
jsr LA49B
jmp L9D62
L9D73: rts
2018-01-18 01:49:27 +00:00
L9D74: lda open_params4::ref_num
2018-01-18 02:07:22 +00:00
sta read_params6::ref_num
sta close_params5::ref_num
2018-01-18 01:35:35 +00:00
sta mark_params::ref_num
2017-10-12 15:04:27 +00:00
rts
2018-01-23 02:09:15 +00:00
L9D81: yax_call JT_MLI_RELAY, OPEN, open_params5
2017-10-12 15:04:27 +00:00
beq L9D9B
cmp #$45
beq L9D96
jsr LA497
jmp L9D81
L9D96: jsr LA497
lda #$45
L9D9B: rts
2018-01-18 02:07:22 +00:00
L9D9C: lda open_params5::ref_num
sta write_params::ref_num
2018-01-18 01:35:35 +00:00
sta close_params3::ref_num
2018-01-18 02:07:22 +00:00
sta mark_params2::ref_num
2017-10-12 15:04:27 +00:00
rts
2018-01-18 02:07:22 +00:00
L9DA9: lda #<$0AC0
sta read_params6::request
lda #>$0AC0
sta read_params6::request+1
2018-01-23 02:09:15 +00:00
L9DB3: yax_call JT_MLI_RELAY, READ, read_params6
2017-10-12 15:04:27 +00:00
beq L9DC8
cmp #$4C
beq L9DD9
jsr LA49B
jmp L9DB3
2018-01-18 02:07:22 +00:00
L9DC8: lda read_params6::trans
sta write_params::request
lda read_params6::trans+1
sta write_params::request+1
ora read_params6::trans
2017-10-12 15:04:27 +00:00
bne L9DDE
L9DD9: lda #$FF
sta L9E18
2018-01-23 02:09:15 +00:00
L9DDE: yax_call JT_MLI_RELAY, GET_MARK, mark_params
2017-10-12 15:04:27 +00:00
rts
2018-01-23 02:09:15 +00:00
L9DE8: yax_call JT_MLI_RELAY, WRITE, write_params
2017-10-12 15:04:27 +00:00
beq L9DF9
jsr LA497
jmp L9DE8
2018-01-23 02:09:15 +00:00
L9DF9: yax_call JT_MLI_RELAY, GET_MARK, mark_params2
2017-10-12 15:04:27 +00:00
rts
2018-01-23 02:09:15 +00:00
L9E03: yax_call JT_MLI_RELAY, CLOSE, close_params3
2017-10-12 15:04:27 +00:00
rts
2018-01-23 02:09:15 +00:00
L9E0D: yax_call JT_MLI_RELAY, CLOSE, close_params5
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
L9E17: .byte 0
L9E18: .byte 0
2017-10-12 15:04:27 +00:00
L9E19: ldx #$07
2018-01-17 14:59:34 +00:00
L9E1B: lda file_info_params2,x
2018-01-18 02:07:22 +00:00
sta create_params3,x
2017-10-12 15:04:27 +00:00
dex
cpx #$03
bne L9E1B
2018-01-23 02:09:15 +00:00
L9E26: yax_call JT_MLI_RELAY, CREATE, create_params3
2017-10-12 15:04:27 +00:00
beq L9E6F
cmp #$47
bne L9E69
bit L918D
bmi L9E60
lda #$03
sta L9937
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_copy_file_dialog, L9937
2017-10-12 15:04:27 +00:00
pha
lda #$02
sta L9937
pla
cmp #$02
beq L9E60
cmp #$03
beq L9E71
cmp #$04
bne L9E66
lda #$80
sta L918D
L9E60: jsr LA426
jmp L9E6F
L9E66: jmp LA39F
L9E69: jsr LA497
jmp L9E26
L9E6F: clc
rts
L9E71: sec
rts
2018-01-01 05:16:41 +00:00
L9E73: .byte $94,$9F,$E3,$97,$2E,$A0
2017-12-31 20:32:47 +00:00
L9E79: .byte 0
L9E7A: .byte 0
L9E7B: .byte 0
2017-10-12 15:04:27 +00:00
.byte $20
.byte $02
L9E7E: sta L9E79
2018-01-24 05:52:53 +00:00
lda #<$9EB1 ; ???
2017-10-12 15:04:27 +00:00
sta L9183
2018-01-24 04:11:38 +00:00
lda #>$9EB1
2018-01-05 04:27:15 +00:00
sta L9183+1
2018-01-24 05:52:53 +00:00
lda #<$9EA3 ; ???
2017-10-12 15:04:27 +00:00
sta L917D
2018-01-24 04:11:38 +00:00
lda #>$9EA3
2018-01-05 04:27:15 +00:00
sta L917D+1
2017-10-12 15:04:27 +00:00
jsr LA044
2018-01-24 07:05:16 +00:00
lda #<$9ED3 ; ???
2017-10-12 15:04:27 +00:00
sta L9180
2018-01-24 04:11:38 +00:00
lda #>$9ED3
2018-01-05 04:27:15 +00:00
sta L9180+1
2017-10-12 15:04:27 +00:00
rts
sta L9E7A
stx L9E7B
lda #$01
sta L9E79
jmp LA044
lda #$02
sta L9E79
jsr LA044
beq L9EBE
jmp LA39F
L9EBE: rts
L9EBF: ldy #$05
L9EC1: lda L9E73,y
sta L97DD,y
dey
bpl L9EC1
lda #$00
sta LA425
sta L918D
rts
lda #$05
sta L9E79
jmp LA044
L9EDB: lda #$03
sta L9E79
jsr LA379
2018-01-23 02:09:15 +00:00
L9EE3: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq L9EF4
jsr LA49B
jmp L9EE3
2018-01-18 01:54:54 +00:00
L9EF4: lda file_info_params2::storage
2017-10-12 15:04:27 +00:00
sta L9F1D
2018-01-20 03:41:20 +00:00
cmp #ST_LINKED_DIRECTORY
2017-10-12 15:04:27 +00:00
beq L9F02
lda #$00
beq L9F04
L9F02: lda #$FF
L9F04: sta L9F1C
beq L9F1E
jsr L98D8
lda L9F1D
cmp #$0D
bne L9F18
lda #$FF
sta L9F1D
L9F18: jmp L9F1E
rts
2017-12-31 20:32:47 +00:00
L9F1C: .byte 0
L9F1D: .byte 0
2017-10-12 15:04:27 +00:00
L9F1E: bit $E05C
bmi L9F26
jsr LA3EF
L9F26: jsr LA2F1
2018-01-23 02:09:15 +00:00
L9F29: yax_call JT_MLI_RELAY, DESTROY, destroy_params
2017-10-12 15:04:27 +00:00
beq L9F8D
cmp #$4E
bne L9F8E
bit L918D
bmi L9F62
lda #$04
sta L9E79
jsr LA044
pha
lda #$03
sta L9E79
pla
cmp #$03
beq L9F8D
cmp #$02
beq L9F62
cmp #$04
bne L9F5F
lda #$80
sta L918D
bne L9F62
L9F5F: jmp LA39F
2018-01-23 02:09:15 +00:00
L9F62: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2018-01-18 01:54:54 +00:00
lda file_info_params2::access
2017-10-12 15:04:27 +00:00
and #$80
bne L9F8D
lda #$C3
2018-01-18 01:54:54 +00:00
sta file_info_params2::access
2018-01-17 14:59:34 +00:00
lda #7 ; param count for SET_FILE_INFO
sta file_info_params2
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2
2018-01-17 14:59:34 +00:00
lda #$A ; param count for GET_FILE_INFO
sta file_info_params2
2017-10-12 15:04:27 +00:00
jmp L9F29
L9F8D: rts
L9F8E: jsr LA49B
jmp L9F29
jsr LA3D1
beq L9F9C
jmp LA39F
L9F9C: jsr LA2FD
bit $E05C
bmi L9FA7
jsr LA3EF
L9FA7: jsr LA2F1
2018-01-23 02:09:15 +00:00
L9FAA: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq L9FBB
jsr LA49B
jmp L9FAA
2018-01-18 01:54:54 +00:00
L9FBB: lda file_info_params2::storage
2018-01-20 03:41:20 +00:00
cmp #ST_LINKED_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA022
2018-01-23 02:09:15 +00:00
L9FC2: yax_call JT_MLI_RELAY, DESTROY, destroy_params
2017-10-12 15:04:27 +00:00
beq LA022
cmp #$4E
bne LA01C
bit L918D
bmi LA001
lda #$04
sta L9E79
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_delete_file_dialog, L9E79
2017-10-12 15:04:27 +00:00
pha
lda #$03
sta L9E79
pla
cmp #$03
beq LA022
cmp #$02
L9FF1: beq LA001
cmp #$04
bne L9FFE
lda #$80
sta L918D
bne LA001
L9FFE: jmp LA39F
LA001: lda #$C3
2018-01-18 01:54:54 +00:00
sta file_info_params2::access
2018-01-17 14:59:34 +00:00
lda #7 ; param count for SET_FILE_INFO
sta file_info_params2
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2
2018-01-17 14:59:34 +00:00
lda #$A ; param count for GET_FILE_INFO
sta file_info_params2
2017-10-12 15:04:27 +00:00
jmp L9FC2
LA01C: jsr LA49B
jmp L9FC2
LA022: jmp LA322
jsr LA322
lda #$FF
sta L9923
rts
2018-01-23 02:09:15 +00:00
LA02E: yax_call JT_MLI_RELAY, DESTROY, destroy_params
2017-10-12 15:04:27 +00:00
beq LA043
cmp #$4E
beq LA043
jsr LA49B
jmp LA02E
LA043: rts
2018-01-23 02:09:15 +00:00
LA044: yax_call launch_dialog, index_delete_file_dialog, L9E79
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
LA04E: .addr LA170
.addr rts2
.addr rts2
2017-12-31 20:32:47 +00:00
LA054: .byte 0
LA055: .byte 0
LA056: .byte 0
2018-01-21 22:35:37 +00:00
.addr $220
2017-10-12 15:04:27 +00:00
LA059: lda #$00
sta LA054
bit L918B
bpl LA085
2018-01-24 04:11:38 +00:00
lda #<$A0D1
2017-10-12 15:04:27 +00:00
sta L9183
2018-01-24 04:11:38 +00:00
lda #>$A0D1
2018-01-05 04:27:15 +00:00
sta L9183+1
2018-01-24 04:11:38 +00:00
lda #<$A0B5
2017-10-12 15:04:27 +00:00
sta L917D
2018-01-24 04:11:38 +00:00
lda #>$A0B5
2018-01-05 04:27:15 +00:00
sta L917D+1
2017-10-12 15:04:27 +00:00
jsr LA10A
2018-01-24 04:11:38 +00:00
lda #<$A0F8
2017-10-12 15:04:27 +00:00
sta L9180
2018-01-24 04:11:38 +00:00
lda #>$A0F8
2018-01-05 04:27:15 +00:00
sta L9180+1
2017-10-12 15:04:27 +00:00
rts
2018-01-24 04:11:38 +00:00
LA085: lda #<$A0C3
2017-10-12 15:04:27 +00:00
sta L9183
2018-01-24 04:11:38 +00:00
lda #>$A0C3
2018-01-05 04:27:15 +00:00
sta L9183+1
2018-01-24 04:11:38 +00:00
lda #<$A0A7
2017-10-12 15:04:27 +00:00
sta L917D
2018-01-24 04:11:38 +00:00
lda #>$A0A7
2018-01-05 04:27:15 +00:00
sta L917D+1
2017-10-12 15:04:27 +00:00
jsr LA100
2018-01-24 04:11:38 +00:00
lda #<$A0F0
2017-10-12 15:04:27 +00:00
sta L9180
2018-01-24 04:11:38 +00:00
lda #>$A0F0
2018-01-05 04:27:15 +00:00
sta L9180+1
2017-10-12 15:04:27 +00:00
rts
sta LA055
stx LA056
lda #$01
sta LA054
jmp LA100
sta LA055
stx LA056
lda #$01
sta LA054
jmp LA10A
lda #$02
sta LA054
jsr LA100
beq LA0D0
jmp LA39F
LA0D0: rts
lda #$02
sta LA054
jsr LA10A
beq LA0DE
jmp LA39F
LA0DE: rts
LA0DF: lda #$00
sta LA425
ldy #$05
LA0E6: lda LA04E,y
sta L97DD,y
dey
bpl LA0E6
rts
lda #$04
sta LA054
jmp LA100
lda #$04
sta LA054
jmp LA10A
2018-01-23 02:09:15 +00:00
LA100: yax_call launch_dialog, index_lock_dialog, LA054
2017-10-12 15:04:27 +00:00
rts
2018-01-23 02:09:15 +00:00
LA10A: yax_call launch_dialog, index_unlock_dialog, LA054
2017-10-12 15:04:27 +00:00
rts
LA114: lda #$03
sta LA054
jsr LA379
ldx $1FC0
ldy L9B32
dey
LA123: iny
inx
2018-01-17 15:41:23 +00:00
lda $220,y
2017-10-12 15:04:27 +00:00
sta $1FC0,x
2018-01-17 15:41:23 +00:00
cpy $220
2017-10-12 15:04:27 +00:00
bne LA123
stx $1FC0
2018-01-23 02:09:15 +00:00
LA133: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq LA144
jsr LA49B
jmp LA133
2018-01-18 01:54:54 +00:00
LA144: lda file_info_params2::storage
2017-10-12 15:04:27 +00:00
sta LA169
2018-01-20 03:41:20 +00:00
cmp #ST_VOLUME_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA156
2018-01-20 03:41:20 +00:00
cmp #ST_LINKED_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA156
lda #$00
beq LA158
LA156: lda #$FF
LA158: sta LA168
beq LA16A
jsr L98D8
lda LA169
cmp #$0F
bne LA16A
rts
2017-12-31 20:32:47 +00:00
LA168: .byte 0
LA169: .byte 0
2017-10-12 15:04:27 +00:00
LA16A: jsr LA173
jmp LA2FD
2018-01-21 22:35:37 +00:00
LA170: jsr LA2FD
2017-10-12 15:04:27 +00:00
LA173: jsr LA1C3
jsr LA2F1
2018-01-23 02:09:15 +00:00
LA179: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq LA18A
jsr LA49B
jmp LA179
2018-01-18 01:54:54 +00:00
LA18A: lda file_info_params2::storage
2018-01-20 03:41:20 +00:00
cmp #ST_VOLUME_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA1C0
2018-01-20 03:41:20 +00:00
cmp #ST_LINKED_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA1C0
bit L918B
bpl LA19E
2018-01-20 03:41:20 +00:00
lda #%11000011
2017-10-12 15:04:27 +00:00
bne LA1A0
LA19E: lda #$21
2018-01-18 01:54:54 +00:00
LA1A0: sta file_info_params2::access
2018-01-17 14:59:34 +00:00
LA1A3: lda #7 ; param count for SET_FILE_INFO
sta file_info_params2
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
pha
2018-01-17 14:59:34 +00:00
lda #$A ; param count for GET_FILE_INFO
sta file_info_params2
2017-10-12 15:04:27 +00:00
pla
beq LA1C0
jsr LA49B
jmp LA1A3
LA1C0: jmp LA322
LA1C3: lda LA2ED
sec
sbc #$01
sta LA055
lda LA2EE
sbc #$00
sta LA056
bit L918B
bpl LA1DC
jmp LA10A
LA1DC: jmp LA100
2018-01-21 22:35:37 +00:00
LA1DF: .byte 0
.addr LA2ED, LA2EF
2018-01-13 03:06:55 +00:00
2017-10-12 15:04:27 +00:00
LA1E4: lda #$00
sta LA1DF
2018-01-24 04:11:38 +00:00
lda #<$A220
2017-10-12 15:04:27 +00:00
sta L9183
2018-01-24 04:11:38 +00:00
lda #>$A220
2018-01-05 04:27:15 +00:00
sta L9183+1
2018-01-24 04:11:38 +00:00
lda #<$A211
2017-10-12 15:04:27 +00:00
sta L917D
2018-01-24 04:11:38 +00:00
lda #>$A211
2018-01-05 04:27:15 +00:00
sta L917D+1
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_get_size_dialog, LA1DF
2018-01-24 04:11:38 +00:00
lda #<$A233
2017-10-12 15:04:27 +00:00
sta L9180
2018-01-24 04:11:38 +00:00
lda #>$A233
2018-01-05 04:27:15 +00:00
sta L9180+1
2017-10-12 15:04:27 +00:00
rts
lda #$01
sta LA1DF
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_get_size_dialog, LA1DF
2017-10-12 15:04:27 +00:00
LA21F: rts
lda #$02
sta LA1DF
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_get_size_dialog, LA1DF
2017-10-12 15:04:27 +00:00
beq LA21F
jmp LA39F
lda #$03
sta LA1DF
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_get_size_dialog, LA1DF
2017-10-12 15:04:27 +00:00
LA241: rts
2018-01-21 22:35:37 +00:00
LA242: .addr LA2AE,rts2,rts2
2017-10-12 15:04:27 +00:00
LA248: lda #$00
sta LA425
ldy #$05
LA24F: lda LA242,y
sta L97DD,y
dey
bpl LA24F
lda #$00
sta LA2ED
sta LA2EE
sta LA2EF
sta LA2F0
ldy #$17
lda #$00
2018-01-15 04:55:54 +00:00
LA26A: sta BITMAP,y
2017-10-12 15:04:27 +00:00
dey
bpl LA26A
rts
LA271: jsr LA379
2018-01-23 02:09:15 +00:00
LA274: yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
beq LA285
jsr LA49B
jmp LA274
2018-01-18 01:54:54 +00:00
LA285: lda file_info_params2::storage
2017-10-12 15:04:27 +00:00
sta LA2AA
2018-01-20 03:41:20 +00:00
cmp #ST_VOLUME_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA297
2018-01-20 03:41:20 +00:00
cmp #ST_LINKED_DIRECTORY
2017-10-12 15:04:27 +00:00
beq LA297
lda #$00
beq LA299
LA297: lda #$FF
LA299: sta LA2A9
beq LA2AB
jsr L98D8
lda LA2AA
cmp #$0F
bne LA2AB
rts
2017-12-31 20:32:47 +00:00
LA2A9: .byte 0
LA2AA: .byte 0
2017-10-12 15:04:27 +00:00
LA2AB: jmp LA2AE
LA2AE: bit L9189
bvc LA2D4
jsr LA2FD
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, GET_FILE_INFO, file_info_params2
2017-10-12 15:04:27 +00:00
bne LA2D4
lda LA2EF
clc
2018-01-18 01:54:54 +00:00
adc file_info_params2::blocks
2017-10-12 15:04:27 +00:00
sta LA2EF
lda LA2F0
2018-01-18 01:54:54 +00:00
adc file_info_params2::blocks+1
2017-10-12 15:04:27 +00:00
sta LA2F0
LA2D4: inc LA2ED
bne LA2DC
inc LA2EE
LA2DC: bit L9189
bvc LA2E4
jsr LA322
LA2E4: lda LA2ED
ldx LA2EE
jmp L917C
2017-12-31 20:32:47 +00:00
LA2ED: .byte 0
LA2EE: .byte 0
LA2EF: .byte 0
LA2F0: .byte 0
2017-10-12 15:04:27 +00:00
LA2F1: lda LA2ED
bne LA2F9
dec LA2EE
LA2F9: dec LA2ED
rts
LA2FD: lda L97AD
bne LA303
rts
LA303: ldx #$00
2018-01-17 15:41:23 +00:00
ldy $220
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $0221,y
iny
LA30E: cpx L97AD
bcs LA31E
lda L97AE,x
sta $0221,y
inx
iny
jmp LA30E
2018-01-17 15:41:23 +00:00
LA31E: sty $220
2017-10-12 15:04:27 +00:00
rts
2018-01-17 15:41:23 +00:00
LA322: ldx $220
2017-10-12 15:04:27 +00:00
bne LA328
rts
2018-01-17 15:41:23 +00:00
LA328: lda $220,x
2017-10-12 15:04:27 +00:00
cmp #$2F
beq LA336
dex
bne LA328
2018-01-17 15:41:23 +00:00
stx $220
2017-10-12 15:04:27 +00:00
rts
LA336: dex
2018-01-17 15:41:23 +00:00
stx $220
2017-10-12 15:04:27 +00:00
rts
LA33B: lda L97AD
bne LA341
rts
LA341: ldx #$00
ldy $1FC0
2018-01-24 04:11:38 +00:00
lda #'/'
2017-10-12 15:04:27 +00:00
sta $1FC1,y
iny
LA34C: cpx L97AD
bcs LA35C
lda L97AE,x
sta $1FC1,y
inx
iny
jmp LA34C
LA35C: sty $1FC0
rts
LA360: ldx $1FC0
bne LA366
rts
LA366: lda $1FC0,x
cmp #$2F
beq LA374
dex
bne LA366
stx $1FC0
rts
LA374: dex
stx $1FC0
rts
LA379: ldy #$00
sty L9B32
dey
LA37F: iny
lda $E00A,y
cmp #$2F
bne LA38A
sty L9B32
2018-01-17 15:41:23 +00:00
LA38A: sta $220,y
2017-10-12 15:04:27 +00:00
cpy $E00A
bne LA37F
2018-01-16 04:33:32 +00:00
ldy LDFC9
LA395: lda LDFC9,y
2017-10-12 15:04:27 +00:00
sta $1FC0,y
dey
bpl LA395
rts
LA39F: jsr L917F
jmp LA3A7
2018-01-18 01:35:35 +00:00
.proc close_params4
params: .byte 1
ref_num:.byte 0
.endproc
2018-01-23 02:09:15 +00:00
LA3A7: yax_call JT_MLI_RELAY, CLOSE, close_params4
lda selected_window_index
2017-10-12 15:04:27 +00:00
beq LA3CA
2018-01-31 05:42:26 +00:00
sta getwinport_params2::window_id
2018-01-30 16:57:36 +00:00
yax_call JT_MGTK_RELAY, MGTK::GetWinPort, getwinport_params2
yax_call JT_MGTK_RELAY, MGTK::SetPort, grafport2
2017-10-12 15:04:27 +00:00
LA3CA: ldx L9188
txs
lda #$FF
rts
2018-01-30 16:57:36 +00:00
LA3D1: yax_call JT_MGTK_RELAY, MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::key_down
2017-10-12 15:04:27 +00:00
bne LA3EC
2018-01-30 16:57:36 +00:00
lda event_params_key
2018-01-12 07:03:53 +00:00
cmp #KEY_ESCAPE
2017-10-12 15:04:27 +00:00
bne LA3EC
lda #$FF
bne LA3EE
LA3EC: lda #$00
LA3EE: rts
LA3EF: lda LA2ED
sec
sbc #$01
sta L9E7A
lda LA2EE
sbc #$00
sta L9E7B
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_delete_file_dialog, L9E79
2017-10-12 15:04:27 +00:00
rts
LA40A: lda LA2ED
sec
sbc #$01
sta L9938
lda LA2EE
sbc #$00
2018-01-21 22:35:37 +00:00
sta L9938+1
2018-01-23 02:09:15 +00:00
yax_call launch_dialog, index_copy_file_dialog, L9937
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
LA425: .byte 0
2017-10-12 15:04:27 +00:00
LA426: jsr LA46D
lda #$C3
2018-01-18 01:35:35 +00:00
sta file_info_params3::access
2017-10-12 15:04:27 +00:00
jsr LA479
2018-01-18 01:54:54 +00:00
lda file_info_params2::type
2017-10-12 15:04:27 +00:00
cmp #$0F
beq LA46C
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, OPEN, open_params5
2017-10-12 15:04:27 +00:00
beq LA449
jsr LA497
jmp LA426
2018-01-18 02:07:22 +00:00
LA449: lda open_params5::ref_num
2018-01-18 01:35:35 +00:00
sta set_eof_params::ref_num
sta close_params3::ref_num
2018-01-23 02:09:15 +00:00
LA452: yax_call JT_MLI_RELAY, SET_EOF, set_eof_params
2017-10-12 15:04:27 +00:00
beq LA463
jsr LA497
jmp LA452
2018-01-23 02:09:15 +00:00
LA463: yax_call JT_MLI_RELAY, CLOSE, close_params3
2017-10-12 15:04:27 +00:00
LA46C: rts
LA46D: ldx #$0A
2018-01-18 01:54:54 +00:00
LA46F: lda file_info_params2::access,x
2018-01-18 01:35:35 +00:00
sta file_info_params3::access,x
2017-10-12 15:04:27 +00:00
dex
bpl LA46F
rts
2018-01-18 01:35:35 +00:00
LA479: lda #7 ; SET_FILE_INFO param_count
sta file_info_params3
2018-01-23 02:09:15 +00:00
yax_call JT_MLI_RELAY, SET_FILE_INFO, file_info_params3
2017-10-12 15:04:27 +00:00
pha
2018-01-18 01:35:35 +00:00
lda #$A ; GET_FILE_INFO param_count
sta file_info_params3
2017-10-12 15:04:27 +00:00
pla
beq LA496
jsr LA497
jmp LA479
LA496: rts
LA497: ldx #$80
bne LA49D
LA49B: ldx #$00
LA49D: stx LA4C5
cmp #$45
beq LA4AE
cmp #$44
beq LA4AE
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
bne LA4C2
rts
LA4AE: bit LA4C5
bpl LA4B8
lda #$FD
jmp LA4BA
LA4B8: lda #$FC
2018-01-20 22:31:48 +00:00
LA4BA: jsr JT_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
bne LA4C2
jmp LA4C6
2017-12-31 02:02:15 +00:00
LA4C2: jmp LA39F
2017-12-31 20:32:47 +00:00
LA4C5: .byte 0
2018-01-23 02:09:15 +00:00
LA4C6: yax_call JT_MLI_RELAY, ON_LINE, on_line_params2
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:33:15 +00:00
.assert * = $A4D0, error, "Segment length mismatch"
PAD_TO $A500
2018-01-21 18:44:26 +00:00
;;; ==================================================
2018-01-21 23:37:55 +00:00
;;; Dialog Launcher (or just proc handler???)
2018-01-21 18:44:26 +00:00
index_about_dialog := 0
index_copy_file_dialog := 1
index_delete_file_dialog := 2
index_new_folder_dialog := 3
index_get_info_dialog := 6
index_lock_dialog := 7
index_unlock_dialog := 8
index_rename_dialog := 9
2018-01-24 23:39:12 +00:00
index_download_dialog := $A
2018-01-23 16:33:12 +00:00
index_get_size_dialog := $B
index_warning_dialog := $C
2018-01-21 18:44:26 +00:00
launch_dialog:
jmp LA520
2017-10-12 15:04:27 +00:00
2018-01-14 05:20:59 +00:00
LA503: .addr show_about_dialog
.addr show_copy_file_dialog
.addr show_delete_file_dialog
.addr show_new_folder_dialog
2018-01-21 18:44:26 +00:00
.addr rts1
.addr rts1
.addr show_get_info_dialog
2018-01-14 05:20:59 +00:00
.addr show_lock_dialog
.addr show_unlock_dialog
.addr show_rename_dialog
2018-01-24 23:39:12 +00:00
.addr show_download_dialog
2018-01-21 23:37:55 +00:00
.addr show_get_size_dialog
2018-01-23 16:33:12 +00:00
.addr show_warning_dialog
2018-01-14 05:20:59 +00:00
2018-01-24 23:39:12 +00:00
dialog_param_addr: .addr 0
2018-01-22 07:00:34 +00:00
.byte 0
2018-01-17 15:03:02 +00:00
2018-01-24 23:39:12 +00:00
LA520: sta dialog_param_addr
stx dialog_param_addr+1
2017-10-12 15:04:27 +00:00
tya
asl a
tax
lda LA503,x
sta LA565
2018-01-05 04:27:15 +00:00
lda LA503+1,x
sta LA565+1
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-15 18:08:50 +00:00
sta LD8EB
sta LD8EC
sta LD8F0
sta LD8F1
sta LD8F2
sta LD8E8
sta LD8F5
sta LD8ED
2018-01-22 07:00:34 +00:00
sta cursor_ip_flag
2017-10-12 15:04:27 +00:00
lda #$14
2018-01-15 18:08:50 +00:00
sta LD8E9
2018-01-24 04:11:38 +00:00
lda #<$A898
2017-10-12 15:04:27 +00:00
sta LA89A
2018-01-24 04:11:38 +00:00
lda #>$A898
2018-01-05 04:27:15 +00:00
sta LA89A+1
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2018-01-05 04:27:15 +00:00
LA565 := *+1
2018-01-17 03:36:54 +00:00
jmp dummy0000 ; self-modified
2018-01-21 18:44:26 +00:00
2018-01-23 16:33:12 +00:00
;;; ==================================================
;;; Message handler for OK/Cancel dialog
prompt_input_loop: lda LD8E8
2017-10-12 15:04:27 +00:00
beq LA579
2018-01-15 18:08:50 +00:00
dec LD8E9
2017-10-12 15:04:27 +00:00
bne LA579
jsr LB8F5
lda #$14
2018-01-15 18:08:50 +00:00
sta LD8E9
2018-01-30 16:57:36 +00:00
LA579: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2017-10-12 15:04:27 +00:00
bne LA58C
jmp LA5EE
2018-01-29 05:18:00 +00:00
LA58C: cmp #MGTK::key_down
2017-10-12 15:04:27 +00:00
bne LA593
jmp LA6FD
2018-01-15 18:08:50 +00:00
LA593: lda LD8E8
2018-01-23 16:33:12 +00:00
beq prompt_input_loop
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::FindWindow, event_params_coords
2018-01-31 05:42:26 +00:00
lda findwindow_params_which_area
2017-10-12 15:04:27 +00:00
bne LA5A9
2018-01-23 16:33:12 +00:00
jmp prompt_input_loop
2017-10-12 15:04:27 +00:00
LA5A9: lda $D20E
2018-01-31 03:04:33 +00:00
cmp winfoF
2017-10-12 15:04:27 +00:00
beq LA5B4
2018-01-23 16:33:12 +00:00
jmp prompt_input_loop
2017-10-12 15:04:27 +00:00
2018-01-31 03:04:33 +00:00
LA5B4: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-31 03:04:33 +00:00
lda winfoF
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::ScreenToWindow, event_params
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $D20D
LA5D2: MGTK_RELAY_CALL MGTK::InRect, LD6AB
2017-10-12 15:04:27 +00:00
cmp #$80
bne LA5E5
2018-01-22 07:00:34 +00:00
jsr set_cursor_insertion_point_with_flag
2017-10-12 15:04:27 +00:00
jmp LA5E8
2018-01-22 07:00:34 +00:00
LA5E5: jsr set_cursor_pointer_with_flag
LA5E8: jsr reset_state
2018-01-23 16:33:12 +00:00
jmp prompt_input_loop
2017-10-12 15:04:27 +00:00
2018-01-30 16:57:36 +00:00
LA5EE: MGTK_RELAY_CALL MGTK::FindWindow, event_params_coords
2018-01-31 05:42:26 +00:00
lda findwindow_params_which_area
2017-10-12 15:04:27 +00:00
bne LA5FF
lda #$FF
rts
LA5FF: cmp #$02
bne LA606
jmp LA609
LA606: lda #$FF
rts
LA609: lda $D20E
2018-01-31 03:04:33 +00:00
cmp winfoF
2017-10-12 15:04:27 +00:00
beq LA614
lda #$FF
rts
2018-01-31 03:04:33 +00:00
LA614: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-31 03:04:33 +00:00
lda winfoF
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::ScreenToWindow, event_params
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $D20D
2018-01-15 18:08:50 +00:00
bit LD8E7
2017-10-12 15:04:27 +00:00
bvc LA63A
jmp LA65E
2018-01-29 05:18:00 +00:00
LA63A: MGTK_RELAY_CALL MGTK::InRect, desktop_aux::ok_button_rect
2017-10-12 15:04:27 +00:00
cmp #$80
beq LA64A
jmp LA6C1
2018-01-21 23:37:55 +00:00
LA64A: jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
2017-10-12 15:04:27 +00:00
jsr LB7CF
bmi LA65D
lda #$00
LA65D: rts
2018-01-29 05:18:00 +00:00
LA65E: MGTK_RELAY_CALL MGTK::InRect, desktop_aux::yes_button_rect
2017-10-12 15:04:27 +00:00
cmp #$80
bne LA67F
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::yes_button_rect
2017-10-12 15:04:27 +00:00
jsr LB7D9
bmi LA67E
lda #$02
LA67E: rts
2018-01-29 05:18:00 +00:00
LA67F: MGTK_RELAY_CALL MGTK::InRect, desktop_aux::no_button_rect
2017-10-12 15:04:27 +00:00
cmp #$80
bne LA6A0
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::no_button_rect
2017-10-12 15:04:27 +00:00
jsr LB7DE
bmi LA69F
lda #$03
LA69F: rts
2018-01-29 05:18:00 +00:00
LA6A0: MGTK_RELAY_CALL MGTK::InRect, desktop_aux::all_button_rect
2017-10-12 15:04:27 +00:00
cmp #$80
bne LA6C1
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::all_button_rect
2017-10-12 15:04:27 +00:00
jsr LB7E3
bmi LA6C0
lda #$04
LA6C0: rts
2018-01-15 18:08:50 +00:00
LA6C1: bit LD8E7
2017-10-12 15:04:27 +00:00
bpl LA6C9
lda #$FF
rts
2018-01-29 05:18:00 +00:00
LA6C9: MGTK_RELAY_CALL MGTK::InRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
cmp #$80
beq LA6D9
jmp LA6ED
2018-01-21 23:37:55 +00:00
LA6D9: jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
jsr LB7D4
bmi LA6EC
lda #$01
LA6EC: rts
2018-01-15 18:08:50 +00:00
LA6ED: bit LD8E8
2017-10-12 15:04:27 +00:00
bmi LA6F7
lda #$FF
jmp LA899
LA6F7: jsr LB9B8
lda #$FF
rts
2018-01-30 16:57:36 +00:00
LA6FD: lda event_params_modifiers
2018-01-26 02:22:33 +00:00
cmp #$2 ; closed-apple
2017-10-12 15:04:27 +00:00
bne LA71A
2018-01-30 16:57:36 +00:00
lda event_params_key
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-26 02:22:33 +00:00
cmp #KEY_LEFT
2017-10-12 15:04:27 +00:00
bne LA710
jmp LA815
2018-01-26 02:22:33 +00:00
LA710: cmp #KEY_RIGHT
2017-10-12 15:04:27 +00:00
bne LA717
jmp LA820
LA717: lda #$FF
rts
2018-01-30 16:57:36 +00:00
LA71A: lda event_params_key
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-12 07:03:53 +00:00
cmp #KEY_LEFT
2017-10-12 15:04:27 +00:00
bne LA72E
2018-01-15 18:08:50 +00:00
bit LD8ED
2017-10-12 15:04:27 +00:00
bpl LA72B
jmp L0CB8
LA72B: jmp LA82B
2018-01-12 07:03:53 +00:00
LA72E: cmp #KEY_RIGHT
2017-10-12 15:04:27 +00:00
bne LA73D
2018-01-15 18:08:50 +00:00
bit LD8ED
2017-10-12 15:04:27 +00:00
bpl LA73A
jmp L0CD7
LA73A: jmp LA83E
2018-01-12 07:03:53 +00:00
LA73D: cmp #KEY_RETURN
2017-10-12 15:04:27 +00:00
bne LA749
2018-01-15 18:08:50 +00:00
bit LD8E7
2017-10-12 15:04:27 +00:00
bvs LA717
jmp LA851
2018-01-12 07:03:53 +00:00
LA749: cmp #KEY_ESCAPE
2017-10-12 15:04:27 +00:00
bne LA755
2018-01-15 18:08:50 +00:00
bit LD8E7
2017-10-12 15:04:27 +00:00
bmi LA717
jmp LA86F
2018-01-12 07:03:53 +00:00
LA755: cmp #KEY_DELETE
2017-10-12 15:04:27 +00:00
bne LA75C
jmp LA88D
2018-01-12 07:03:53 +00:00
LA75C: cmp #KEY_UP
2017-10-12 15:04:27 +00:00
bne LA76B
2018-01-15 18:08:50 +00:00
bit LD8ED
2017-10-12 15:04:27 +00:00
bmi LA768
jmp LA717
LA768: jmp L0D14
2018-01-12 07:03:53 +00:00
LA76B: cmp #KEY_DOWN
2017-10-12 15:04:27 +00:00
bne LA77A
2018-01-15 18:08:50 +00:00
bit LD8ED
2017-10-12 15:04:27 +00:00
bmi LA777
jmp LA717
LA777: jmp L0CF9
2018-01-15 18:08:50 +00:00
LA77A: bit LD8E7
2017-10-12 15:04:27 +00:00
bvc LA79B
2018-01-12 07:15:04 +00:00
cmp #'Y'
2017-10-12 15:04:27 +00:00
beq LA7E8
2018-01-12 07:15:04 +00:00
cmp #'y'
2017-10-12 15:04:27 +00:00
beq LA7E8
2018-01-12 07:15:04 +00:00
cmp #'N'
2017-10-12 15:04:27 +00:00
beq LA7F7
2018-01-12 07:15:04 +00:00
cmp #'n'
2017-10-12 15:04:27 +00:00
beq LA7F7
2018-01-12 07:15:04 +00:00
cmp #'A'
2017-10-12 15:04:27 +00:00
beq LA806
2018-01-12 07:15:04 +00:00
cmp #'a'
2017-10-12 15:04:27 +00:00
beq LA806
2018-01-12 07:15:04 +00:00
cmp #KEY_RETURN
2017-10-12 15:04:27 +00:00
beq LA7E8
2018-01-15 18:08:50 +00:00
LA79B: bit LD8F5
2017-10-12 15:04:27 +00:00
bmi LA7C8
cmp #$2E
beq LA7D8
cmp #$30
bcs LA7AB
jmp LA717
LA7AB: cmp #$7B
bcc LA7B2
jmp LA717
LA7B2: cmp #$3A
bcc LA7D8
cmp #$41
bcs LA7BD
jmp LA717
LA7BD: cmp #$5B
bcc LA7DD
cmp #$61
bcs LA7DD
jmp LA717
LA7C8: cmp #$20
bcs LA7CF
jmp LA717
LA7CF: cmp #$7E
beq LA7DD
bcc LA7DD
jmp LA717
2018-01-24 05:37:41 +00:00
LA7D8: ldx path_buf1
2017-10-12 15:04:27 +00:00
beq LA7E5
2018-01-15 18:08:50 +00:00
LA7DD: ldx LD8E8
2017-10-12 15:04:27 +00:00
beq LA7E5
jsr LBB0B
LA7E5: lda #$FF
rts
2018-01-21 23:37:55 +00:00
LA7E8: jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::yes_button_rect
2017-10-12 15:04:27 +00:00
lda #$02
rts
2018-01-21 23:37:55 +00:00
LA7F7: jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::no_button_rect
2017-10-12 15:04:27 +00:00
lda #$03
rts
2018-01-21 23:37:55 +00:00
LA806: jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::all_button_rect
2017-10-12 15:04:27 +00:00
lda #$04
rts
2018-01-15 18:08:50 +00:00
LA815: lda LD8E8
2017-10-12 15:04:27 +00:00
beq LA81D
jsr LBC5E
LA81D: lda #$FF
rts
2018-01-15 18:08:50 +00:00
LA820: lda LD8E8
2017-10-12 15:04:27 +00:00
beq LA828
jsr LBCC9
LA828: lda #$FF
rts
2018-01-15 18:08:50 +00:00
LA82B: lda LD8E8
2017-10-12 15:04:27 +00:00
beq LA83B
2018-01-15 18:08:50 +00:00
bit LD8ED
2017-10-12 15:04:27 +00:00
bpl LA838
jmp L0CD7
LA838: jsr LBBA4
LA83B: lda #$FF
rts
2018-01-15 18:08:50 +00:00
LA83E: lda LD8E8
2017-10-12 15:04:27 +00:00
beq LA84E
2018-01-15 18:08:50 +00:00
bit LD8ED
2017-10-12 15:04:27 +00:00
bpl LA84B
jmp L0CB8
LA84B: jsr LBC03
LA84E: lda #$FF
rts
2018-01-31 03:04:33 +00:00
LA851: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
2017-10-12 15:04:27 +00:00
lda #$00
rts
2018-01-31 03:04:33 +00:00
LA86F: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
lda #$01
rts
2018-01-15 18:08:50 +00:00
LA88D: lda LD8E8
2017-10-12 15:04:27 +00:00
beq LA895
jsr LBB63
LA895: lda #$FF
rts
2018-01-14 05:20:59 +00:00
rts1:
2017-10-12 15:04:27 +00:00
rts
2018-01-05 04:27:15 +00:00
LA89A := *+1
2018-01-17 03:36:54 +00:00
LA899: jmp dummy0000
2017-12-31 20:32:47 +00:00
2018-01-11 06:31:02 +00:00
2018-01-14 05:20:59 +00:00
;;; ==================================================
;;; "About" dialog
2018-01-11 07:04:47 +00:00
.proc show_about_dialog
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::OpenWindow, winfo18
lda winfo18::window_id
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::about_dialog_outer_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::about_dialog_inner_rect
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_about1
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $81, desktop_aux::str_about2
axy_call draw_dialog_label, $82, desktop_aux::str_about3
axy_call draw_dialog_label, $83, desktop_aux::str_about4
axy_call draw_dialog_label, $05, desktop_aux::str_about5
axy_call draw_dialog_label, $86, desktop_aux::str_about6
axy_call draw_dialog_label, $07, desktop_aux::str_about7
axy_call draw_dialog_label, $09, desktop_aux::str_about8
2017-10-12 15:04:27 +00:00
lda #$36
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2017-10-12 15:04:27 +00:00
lda #$01
2018-01-21 18:56:50 +00:00
sta dialog_label_pos+1
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $09, desktop_aux::str_about9
2017-10-12 15:04:27 +00:00
lda #$28
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-21 18:56:50 +00:00
sta dialog_label_pos+1
2018-01-11 07:04:47 +00:00
2018-01-30 16:57:36 +00:00
: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_down
2018-01-11 07:04:47 +00:00
beq close
2018-01-29 05:18:00 +00:00
cmp #MGTK::key_down
2018-01-11 07:04:47 +00:00
bne :-
2018-01-30 16:57:36 +00:00
lda event_params_key
2017-10-12 15:04:27 +00:00
and #$7F
2018-01-11 07:04:47 +00:00
cmp #KEY_ESCAPE
beq close
cmp #KEY_RETURN
bne :-
jmp close
2017-10-12 15:04:27 +00:00
2018-01-31 03:04:33 +00:00
close: MGTK_RELAY_CALL MGTK::CloseWindow, winfo18
2018-01-22 07:00:34 +00:00
jsr reset_state
jsr set_cursor_pointer_with_flag
2017-10-12 15:04:27 +00:00
rts
2018-01-11 07:04:47 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-14 05:20:59 +00:00
;;; ==================================================
show_copy_file_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$01
bne LA965
jmp LA9B5
LA965: cmp #$02
bne LA96C
jmp LA9E6
LA96C: cmp #$03
bne LA973
jmp LAA6A
LA973: cmp #$04
bne LA97A
jmp LAA9C
LA97A: cmp #$05
bne LA981
jmp LAA5A
LA981: lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LB53A
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_copy_title
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $01, desktop_aux::str_copy_copying
axy_call draw_dialog_label, $02, desktop_aux::str_copy_from
axy_call draw_dialog_label, $03, desktop_aux::str_copy_to
axy_call draw_dialog_label, $04, desktop_aux::str_copy_remaining
2017-10-12 15:04:27 +00:00
rts
LA9B5: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB0B6
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
addr_call draw_text1, str_files
2017-10-12 15:04:27 +00:00
rts
LA9E6: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
jsr LBE8D
jsr LBE9A
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
sta $06+1
stx $06
2017-10-12 15:04:27 +00:00
jsr LBE63
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LAE7E
2018-01-24 05:52:53 +00:00
addr_call draw_text1, path_buf0
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$05
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
sta $06+1
stx $06
2017-10-12 15:04:27 +00:00
jsr LBE78
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LAE82
2018-01-24 05:37:41 +00:00
addr_call draw_text1, path_buf1
2018-01-29 05:18:00 +00:00
yax_call MGTK_RELAY, MGTK::MoveTo, desktop_aux::LB0BA
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
LAA5A: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
LAA6A: jsr bell
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $06, desktop_aux::str_exists_prompt
2018-01-21 23:37:55 +00:00
jsr draw_yes_no_all_cancel_buttons
2018-01-23 16:33:12 +00:00
LAA7F: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LAA7F
pha
2018-01-21 23:37:55 +00:00
jsr erase_yes_no_all_cancel_buttons
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::prompt_rect
2017-10-12 15:04:27 +00:00
pla
rts
2018-01-24 23:39:12 +00:00
LAA9C: jsr bell
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $06, desktop_aux::str_large_prompt
2018-01-21 23:37:55 +00:00
jsr draw_ok_cancel_buttons
2018-01-23 16:33:12 +00:00
LAAB1: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LAAB1
pha
2018-01-21 23:37:55 +00:00
jsr erase_ok_cancel_buttons
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::prompt_rect
2017-10-12 15:04:27 +00:00
pla
rts
2018-01-24 23:39:12 +00:00
.proc bell
sta ALTZPOFF
2017-12-31 20:04:22 +00:00
sta ROMIN2
2017-12-31 02:02:15 +00:00
jsr BELL1
2017-10-12 15:04:27 +00:00
sta ALTZPON
lda LCBANK1
lda LCBANK1
rts
2018-01-24 23:39:12 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-21 23:37:55 +00:00
;;; ==================================================
2018-01-24 23:39:12 +00:00
;;; "DownLoad" dialog
2018-01-21 23:37:55 +00:00
2018-01-24 23:39:12 +00:00
.proc show_download_dialog
ptr := $6
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
ldy #0
lda (ptr),y
cmp #1
bne :+
jmp do1
: cmp #2
bne :+
jmp do2
: cmp #3
bne :+
jmp do3
: cmp #4
bne else
jmp do4
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
else: lda #0
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LB53A
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_download
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $01, desktop_aux::str_copy_copying
axy_call draw_dialog_label, $02, desktop_aux::str_copy_from
axy_call draw_dialog_label, $03, desktop_aux::str_copy_to
axy_call draw_dialog_label, $04, desktop_aux::str_copy_remaining
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
do1: ldy #1
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
sta LD909+1
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB0B6
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
addr_call draw_text1, str_files
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
do2: ldy #$01
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
jsr LBE8D
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-24 23:39:12 +00:00
lda (ptr),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
sta ptr+1
stx ptr
2017-10-12 15:04:27 +00:00
jsr LBE63
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LAE7E
2018-01-24 05:52:53 +00:00
addr_call draw_text1, path_buf0
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB0BA
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
do3: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
do4: jsr bell
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-24 23:39:12 +00:00
axy_call draw_dialog_label, ptr, desktop_aux::str_ramcard_full
2018-01-21 23:37:55 +00:00
jsr draw_ok_button
2018-01-24 23:39:12 +00:00
: jsr prompt_input_loop
bmi :-
2017-10-12 15:04:27 +00:00
pha
2018-01-21 23:37:55 +00:00
jsr erase_ok_button
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::prompt_rect
2017-10-12 15:04:27 +00:00
pla
rts
2018-01-24 23:39:12 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-21 23:37:55 +00:00
;;; ==================================================
;;; "Get Size" dialog
2018-01-24 23:39:12 +00:00
.proc show_get_size_dialog
ptr := $6
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
ldy #0
lda (ptr),y
cmp #1
bne :+
jmp do1
: cmp #2
bne :+
jmp do2
: cmp #3
bne else
jmp do3
2017-10-12 15:04:27 +00:00
2018-01-24 23:39:12 +00:00
else: jsr LB53A
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_size_title
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $01, desktop_aux::str_size_number
2018-01-24 23:39:12 +00:00
ldy #1
2018-01-21 18:56:50 +00:00
jsr draw_colon
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $02, desktop_aux::str_size_blocks
2018-01-24 23:39:12 +00:00
ldy #2
2018-01-21 18:56:50 +00:00
jsr draw_colon
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
do1: ldy #$01
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
sta ptr+1
stx ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-24 23:39:12 +00:00
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
lda #$A5
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $01, str_7_spaces
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-24 23:39:12 +00:00
lda (ptr),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
sta ptr+1
stx ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-24 23:39:12 +00:00
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-24 23:39:12 +00:00
lda (ptr),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDDF
lda #$A5
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, str_7_spaces
2017-10-12 15:04:27 +00:00
rts
2018-01-24 23:39:12 +00:00
do3: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
rts
2018-01-31 03:04:33 +00:00
do2: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr draw_ok_button
2018-01-24 23:39:12 +00:00
: jsr prompt_input_loop
bmi :-
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::press_ok_to_rect
2018-01-21 23:37:55 +00:00
jsr erase_ok_button
2017-10-12 15:04:27 +00:00
lda #$00
rts
2018-01-24 23:39:12 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-21 18:56:50 +00:00
;;; ==================================================
;;; "Delete File" dialog
show_delete_file_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$01
bne LACE2
jmp LAD2A
LACE2: cmp #$02
bne LACE9
jmp LADBB
LACE9: cmp #$03
bne LACF0
jmp LAD6C
LACF0: cmp #$04
bne LACF7
jmp LAE05
LACF7: cmp #$05
bne LACFE
jmp LADF5
LACFE: sta LAD1F
lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LB53A
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_delete_title
2017-10-12 15:04:27 +00:00
lda LAD1F
beq LAD20
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $04, desktop_aux::str_ok_empty
2017-10-12 15:04:27 +00:00
rts
2017-12-31 20:32:47 +00:00
LAD1F: .byte 0
2018-01-23 02:09:15 +00:00
LAD20: axy_call draw_dialog_label, $04, desktop_aux::str_delete_ok
2017-10-12 15:04:27 +00:00
rts
LAD2A: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
lda LAD1F
LAD46: bne LAD54
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB16A
2017-10-12 15:04:27 +00:00
jmp LAD5D
2018-01-29 05:18:00 +00:00
LAD54: MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB172
2018-01-11 05:56:19 +00:00
LAD5D: addr_call draw_text1, str_7_spaces
addr_call draw_text1, str_files
2017-10-12 15:04:27 +00:00
rts
LAD6C: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
jsr LBE8D
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
sta $06+1
stx $06
2017-10-12 15:04:27 +00:00
jsr LBE63
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LAE7E
2018-01-24 05:52:53 +00:00
addr_call draw_text1, path_buf0
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB16E
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2017-10-12 15:04:27 +00:00
rts
2018-01-31 03:04:33 +00:00
LADBB: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr draw_ok_cancel_buttons
2018-01-23 16:33:12 +00:00
LADC4: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LADC4
bne LADF4
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::press_ok_to_rect
2018-01-21 23:37:55 +00:00
jsr erase_ok_cancel_buttons
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, desktop_aux::str_file_colon
yax_call draw_dialog_label, $04, desktop_aux::str_delete_remaining
2017-10-12 15:04:27 +00:00
lda #$00
LADF4: rts
2018-01-22 07:00:34 +00:00
LADF5: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
rts
2018-01-31 03:04:33 +00:00
LAE05: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-23 02:09:15 +00:00
axy_call draw_dialog_label, $06, desktop_aux::str_delete_locked_file
2018-01-21 23:37:55 +00:00
jsr draw_yes_no_all_cancel_buttons
2018-01-23 16:33:12 +00:00
LAE17: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LAE17
pha
2018-01-21 23:37:55 +00:00
jsr erase_yes_no_all_cancel_buttons
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy ; white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::prompt_rect ; erase prompt
2017-10-12 15:04:27 +00:00
pla
rts
2018-01-21 18:56:50 +00:00
;;; ==================================================
;;; "New Folder" dialog
2018-01-14 05:20:59 +00:00
show_new_folder_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$80
bne LAE42
jmp LAE70
LAE42: cmp #$40
bne LAE49
jmp LAF16
LAE49: lda #$80
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LBD69
lda #$00
jsr LB509
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_new_folder_title
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, LD6AB
2017-10-12 15:04:27 +00:00
rts
LAE70: lda #$80
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E7
2017-10-12 15:04:27 +00:00
jsr LBD75
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $08
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldy #$00
lda ($08),y
tay
LAE90: lda ($08),y
2018-01-24 05:52:53 +00:00
sta path_buf0,y
2017-10-12 15:04:27 +00:00
dey
bpl LAE90
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, desktop_aux::str_in_colon
2017-10-12 15:04:27 +00:00
lda #$37
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2018-01-24 05:52:53 +00:00
yax_call draw_dialog_label, $02, path_buf0
2017-10-12 15:04:27 +00:00
lda #$28
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $04, desktop_aux::str_enter_folder_name
2017-10-12 15:04:27 +00:00
jsr LB961
2018-01-23 16:33:12 +00:00
LAEC6: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LAEC6
bne LAF16
2018-01-24 05:37:41 +00:00
lda path_buf1
2017-10-12 15:04:27 +00:00
beq LAEC6
cmp #$10
bcc LAEE1
LAED6: lda #$FB
2018-01-20 22:31:48 +00:00
jsr JT_SHOW_ALERT0
2017-10-12 15:04:27 +00:00
jsr LB961
jmp LAEC6
2018-01-24 05:52:53 +00:00
LAEE1: lda path_buf0
2017-10-12 15:04:27 +00:00
clc
2018-01-24 05:37:41 +00:00
adc path_buf1
2017-10-12 15:04:27 +00:00
clc
adc #$01
cmp #$41
bcs LAED6
2018-01-24 05:52:53 +00:00
inc path_buf0
ldx path_buf0
2018-01-24 04:11:38 +00:00
lda #'/'
2018-01-24 05:52:53 +00:00
sta path_buf0,x
ldx path_buf0
2017-10-12 15:04:27 +00:00
ldy #$00
LAEFF: inx
iny
2018-01-24 05:37:41 +00:00
lda path_buf1,y
2018-01-24 05:52:53 +00:00
sta path_buf0,x
2018-01-24 05:37:41 +00:00
cpy path_buf1
2017-10-12 15:04:27 +00:00
bne LAEFF
2018-01-24 05:52:53 +00:00
stx path_buf0
2018-01-25 04:20:39 +00:00
ldy #<path_buf0
ldx #>path_buf0
lda #0
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
LAF16: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
lda #$01
rts
2018-01-14 05:20:59 +00:00
;;; ==================================================
;;; "Get Info" dialog
show_get_info_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
bmi LAF34
jmp LAFB9
LAF34: lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E8
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
lsr a
lsr a
ror a
eor #$80
jsr LB509
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_info_title
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
and #$7F
lsr a
ror a
sta LB01D
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $01, desktop_aux::str_info_name
2017-10-12 15:04:27 +00:00
bit LB01D
bmi LAF78
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, desktop_aux::str_info_locked
2017-10-12 15:04:27 +00:00
jmp LAF81
2018-01-23 02:09:15 +00:00
LAF78: yax_call draw_dialog_label, $02, desktop_aux::str_info_protected
2017-10-12 15:04:27 +00:00
LAF81: bit LB01D
bpl LAF92
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $03, desktop_aux::str_info_blocks
2017-10-12 15:04:27 +00:00
jmp LAF9B
2018-01-23 02:09:15 +00:00
LAF92: yax_call draw_dialog_label, $03, desktop_aux::str_info_size
LAF9B: yax_call draw_dialog_label, $04, desktop_aux::str_info_create
yax_call draw_dialog_label, $05, desktop_aux::str_info_mod
yax_call draw_dialog_label, $06, desktop_aux::str_info_type
2018-01-22 07:00:34 +00:00
jmp reset_state
2017-10-12 15:04:27 +00:00
2018-01-31 03:04:33 +00:00
LAFB9: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta LB01E
tay
2018-01-21 18:56:50 +00:00
jsr draw_colon
2017-10-12 15:04:27 +00:00
lda #$A5
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
lda LB01E
cmp #$02
bne LAFF0
ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
beq LAFE9
2018-01-25 04:20:39 +00:00
addr_jump LAFF8, desktop_aux::str_yes_label
2017-10-12 15:04:27 +00:00
2018-01-25 04:20:39 +00:00
LAFE9: addr_jump LAFF8, desktop_aux::str_no_label
2017-10-12 15:04:27 +00:00
LAFF0: ldy #$02
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
dey
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
LAFF8: ldy LB01E
2018-01-14 05:20:59 +00:00
jsr draw_dialog_label
2017-10-12 15:04:27 +00:00
lda LB01E
cmp #$06
beq LB006
rts
2018-01-23 16:33:12 +00:00
LB006: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LB006
pha
2018-01-22 07:00:34 +00:00
jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer_with_flag
2017-10-12 15:04:27 +00:00
pla
rts
2017-12-31 20:32:47 +00:00
LB01D: .byte 0
LB01E: .byte 0
2018-01-21 18:56:50 +00:00
;;; ==================================================
;;; Draw ":" after dialog label
.proc draw_colon
lda #$A0
sta dialog_label_pos
lda #<desktop_aux::str_colon
ldx #>desktop_aux::str_colon
2018-01-14 05:20:59 +00:00
jsr draw_dialog_label
2017-10-12 15:04:27 +00:00
rts
2018-01-21 18:56:50 +00:00
.endproc
2017-10-12 15:04:27 +00:00
2018-01-14 05:20:59 +00:00
;;; ==================================================
;;; "Lock" dialog
show_lock_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$01
bne LB03A
jmp LB068
LB03A: cmp #$02
bne LB041
jmp LB0F1
LB041: cmp #$03
bne LB048
jmp LB0A2
LB048: cmp #$04
bne LB04F
jmp LB13A
LB04F: lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LB53A
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_lock_title
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $04, desktop_aux::str_lock_ok
2017-10-12 15:04:27 +00:00
rts
LB068: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB231
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB239
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_files
2017-10-12 15:04:27 +00:00
rts
LB0A2: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
jsr LBE8D
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
sta $06+1
stx $06
2017-10-12 15:04:27 +00:00
jsr LBE63
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LAE7E
2018-01-24 05:52:53 +00:00
addr_call draw_text1, path_buf0
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB241
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2017-10-12 15:04:27 +00:00
rts
2018-01-31 03:04:33 +00:00
LB0F1: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr draw_ok_cancel_buttons
2018-01-23 16:33:12 +00:00
LB0FA: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LB0FA
bne LB139
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::press_ok_to_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, desktop_aux::str_file_colon
yax_call draw_dialog_label, $04, desktop_aux::str_lock_remaining
2017-10-12 15:04:27 +00:00
lda #$00
LB139: rts
2018-01-22 07:00:34 +00:00
LB13A: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
rts
2018-01-14 05:20:59 +00:00
;;; ==================================================
;;; "Unlock" dialog
show_unlock_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$01
bne LB158
jmp LB186
LB158: cmp #$02
bne LB15F
jmp LB20F
LB15F: cmp #$03
bne LB166
jmp LB1C0
LB166: cmp #$04
bne LB16D
jmp LB258
LB16D: lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LB53A
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_unlock_title
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $04, desktop_aux::str_unlock_ok
2017-10-12 15:04:27 +00:00
rts
LB186: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB22D
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB235
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_files
2017-10-12 15:04:27 +00:00
rts
LB1C0: ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD909
2017-10-12 15:04:27 +00:00
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-15 05:23:48 +00:00
sta LD90A
2017-10-12 15:04:27 +00:00
jsr LBDC4
jsr LBDDF
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
jsr LBE8D
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tax
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
sta $06+1
stx $06
2017-10-12 15:04:27 +00:00
jsr LBE63
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LAE7E
2018-01-24 05:52:53 +00:00
addr_call draw_text1, path_buf0
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::LB23D
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_7_spaces
2017-10-12 15:04:27 +00:00
rts
2018-01-31 03:04:33 +00:00
LB20F: lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr draw_ok_cancel_buttons
2018-01-23 16:33:12 +00:00
LB218: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LB218
bne LB257
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::press_ok_to_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, desktop_aux::str_file_colon
yax_call draw_dialog_label, $04, desktop_aux::str_unlock_remaining
2017-10-12 15:04:27 +00:00
lda #$00
LB257: rts
2018-01-22 07:00:34 +00:00
LB258: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
rts
2018-01-14 05:20:59 +00:00
;;; ==================================================
;;; "Rename" dialog
show_rename_dialog:
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
cmp #$80
bne LB276
jmp LB2ED
LB276: cmp #$40
bne LB27D
jmp LB313
LB27D: jsr LBD75
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
lda #$80
2018-01-15 18:08:50 +00:00
sta LD8E8
2017-10-12 15:04:27 +00:00
jsr LBD69
lda #$00
jsr LB509
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_rename_title
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, LD6AB
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, desktop_aux::str_rename_old
2017-10-12 15:04:27 +00:00
lda #$55
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2017-10-12 15:04:27 +00:00
ldy #$01
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta $08
iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
ldy #$00
lda ($08),y
tay
LB2CA: lda ($08),y
2018-01-16 04:33:32 +00:00
sta buf_filename,y
2017-10-12 15:04:27 +00:00
dey
bpl LB2CA
2018-01-23 02:09:15 +00:00
yax_call draw_dialog_label, $02, buf_filename
yax_call draw_dialog_label, $04, desktop_aux::str_rename_new
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-24 05:37:41 +00:00
sta path_buf1
2017-10-12 15:04:27 +00:00
jsr LB961
rts
LB2ED: lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E7
2017-10-12 15:04:27 +00:00
lda #$80
2018-01-15 18:08:50 +00:00
sta LD8E8
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-23 16:33:12 +00:00
LB2FD: jsr prompt_input_loop
2017-10-12 15:04:27 +00:00
bmi LB2FD
bne LB313
2018-01-24 05:37:41 +00:00
lda path_buf1
2017-10-12 15:04:27 +00:00
beq LB2FD
jsr LBCC9
ldy #$43
ldx #$D4
lda #$00
rts
2018-01-22 07:00:34 +00:00
LB313: jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
lda #$01
rts
2018-01-14 05:20:59 +00:00
;;; ==================================================
2018-01-23 16:33:12 +00:00
;;; "Warning!" dialog
;;; $6/$7 ptr to message num
.proc show_warning_dialog
ptr := $6
2018-01-14 05:20:59 +00:00
2018-01-23 16:33:12 +00:00
;; Create window
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::HideCursor
2018-01-23 16:33:12 +00:00
jsr create_window_with_alert_bitmap
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-22 07:00:34 +00:00
addr_call draw_centered_string, desktop_aux::str_warning
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::ShowCursor
2018-01-24 23:39:12 +00:00
jsr copy_dialog_param_addr_to_ptr
2018-01-23 16:33:12 +00:00
;; Dig up message
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-23 16:33:12 +00:00
lda (ptr),y
2017-10-12 15:04:27 +00:00
pha
2018-01-23 16:33:12 +00:00
bmi only_ok ; high bit set means no cancel
2017-10-12 15:04:27 +00:00
tax
2018-01-23 16:33:12 +00:00
lda warning_cancel_table,x
bne ok_and_cancel
only_ok: ; no cancel button
pla
2017-10-12 15:04:27 +00:00
and #$7F
pha
2018-01-21 23:37:55 +00:00
jsr draw_ok_button
2018-01-23 16:33:12 +00:00
jmp draw_string
ok_and_cancel: ; has cancel button
jsr draw_ok_cancel_buttons
2017-10-12 15:04:27 +00:00
2018-01-23 16:33:12 +00:00
draw_string:
;; First string
pla
2017-10-12 15:04:27 +00:00
pha
2018-01-23 16:33:12 +00:00
asl a ; * 2
asl a ; * 4, since there are two strings each
2017-10-12 15:04:27 +00:00
tay
2018-01-23 16:33:12 +00:00
lda warning_message_table+1,y
2017-10-12 15:04:27 +00:00
tax
2018-01-23 16:33:12 +00:00
lda warning_message_table,y
2017-10-12 15:04:27 +00:00
ldy #$03
2018-01-14 05:20:59 +00:00
jsr draw_dialog_label
2018-01-23 16:33:12 +00:00
;; Second string
2017-10-12 15:04:27 +00:00
pla
asl a
asl a
tay
2018-01-23 16:33:12 +00:00
lda warning_message_table+2+1,y
2017-10-12 15:04:27 +00:00
tax
2018-01-23 16:33:12 +00:00
lda warning_message_table+2,y
2017-10-12 15:04:27 +00:00
ldy #$04
2018-01-14 05:20:59 +00:00
jsr draw_dialog_label
2018-01-23 16:33:12 +00:00
;; Input loop
: jsr prompt_input_loop
bmi :-
2017-10-12 15:04:27 +00:00
pha
2018-01-22 07:00:34 +00:00
jsr reset_state
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::CloseWindow, winfoF
2018-01-22 07:00:34 +00:00
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
pla
rts
2018-01-23 16:33:12 +00:00
;; high bit set if "cancel" should be an option
warning_cancel_table:
.byte $80,$00,$00,$80,$00,$00,$80
2018-01-12 06:38:03 +00:00
2018-01-23 16:33:12 +00:00
warning_message_table:
.addr desktop_aux::str_insert_system_disk,desktop_aux::str_1_space
.addr desktop_aux::str_selector_list_full,desktop_aux::str_before_new_entries
.addr desktop_aux::str_selector_list_full,desktop_aux::str_before_new_entries
.addr desktop_aux::str_window_must_be_closed,desktop_aux::str_1_space
.addr desktop_aux::str_window_must_be_closed,desktop_aux::str_1_space
.addr desktop_aux::str_too_many_windows,desktop_aux::str_1_space
.addr desktop_aux::str_save_selector_list,desktop_aux::str_on_system_disk
2018-01-23 16:33:12 +00:00
.endproc
warning_msg_insert_system_disk := 0
warning_msg_selector_list_full := 1
warning_msg_selector_list_full2 := 2
warning_msg_window_must_be_closed := 3
warning_msg_window_must_be_closed2 := 4
warning_msg_too_many_windows := 5
warning_msg_save_selector_list := 6
;;; ==================================================
2018-01-12 06:38:03 +00:00
2018-01-24 23:39:12 +00:00
.proc copy_dialog_param_addr_to_ptr
lda dialog_param_addr
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 23:39:12 +00:00
lda dialog_param_addr+1
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-01 05:16:41 +00:00
rts
2018-01-24 23:39:12 +00:00
.endproc
2018-01-22 07:00:34 +00:00
.proc set_cursor_pointer_with_flag
bit cursor_ip_flag
bpl :+
jsr set_cursor_pointer
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-22 07:00:34 +00:00
sta cursor_ip_flag
: rts
.endproc
2017-10-12 15:04:27 +00:00
2018-01-22 07:00:34 +00:00
.proc set_cursor_insertion_point_with_flag
bit cursor_ip_flag
bmi :+
jsr set_cursor_insertion_point
2017-10-12 15:04:27 +00:00
lda #$80
2018-01-22 07:00:34 +00:00
sta cursor_ip_flag
: rts
.endproc
cursor_ip_flag: ; high bit set if IP, clear if pointer
.byte 0
2017-10-12 15:04:27 +00:00
2018-01-22 07:00:34 +00:00
set_cursor_watch:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::HideCursor
MGTK_RELAY_CALL MGTK::SetCursor, watch_cursor
MGTK_RELAY_CALL MGTK::ShowCursor
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
set_cursor_pointer:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::HideCursor
MGTK_RELAY_CALL MGTK::SetCursor, pointer_cursor
MGTK_RELAY_CALL MGTK::ShowCursor
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
set_cursor_insertion_point:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::HideCursor
MGTK_RELAY_CALL MGTK::SetCursor, insertion_point_cursor
MGTK_RELAY_CALL MGTK::ShowCursor
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
set_fill_black:
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
2017-10-12 15:04:27 +00:00
rts
ldx #$03
2018-01-30 16:57:36 +00:00
LB447: lda event_params_coords,x
2017-10-12 15:04:27 +00:00
sta LB502,x
dex
bpl LB447
lda #$00
sta LB501
2018-01-11 05:10:24 +00:00
lda machine_type
2017-10-12 15:04:27 +00:00
asl a
sta LB500
rol LB501
LB45F: dec LB500
lda LB500
cmp #$FF
bne LB46C
dec LB501
LB46C: lda LB501
bne LB476
lda LB500
beq LB4B7
2018-01-30 16:57:36 +00:00
LB476: MGTK_RELAY_CALL MGTK::PeekEvent, event_params
2017-10-12 15:04:27 +00:00
jsr LB4BA
bmi LB4B7
lda #$FF
sta LB508
2018-01-30 16:57:36 +00:00
lda event_params_kind
2017-10-12 15:04:27 +00:00
sta LB507
2018-01-29 05:18:00 +00:00
cmp #MGTK::no_event
2017-10-12 15:04:27 +00:00
beq LB45F
2018-01-29 05:18:00 +00:00
cmp #MGTK::drag
2017-10-12 15:04:27 +00:00
beq LB45F
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_up
2017-10-12 15:04:27 +00:00
bne LB4A7
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::GetEvent, event_params
2017-10-12 15:04:27 +00:00
jmp LB45F
LB4A7: cmp #$01
bne LB4B7
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::GetEvent, event_params
2017-10-12 15:04:27 +00:00
lda #$00
rts
LB4B7: lda #$FF
rts
2018-01-30 16:57:36 +00:00
LB4BA: lda event_params_xcoord
2017-10-12 15:04:27 +00:00
sec
sbc LB502
sta LB506
2018-01-30 16:57:36 +00:00
lda event_params_xcoord+1
2017-10-12 15:04:27 +00:00
sbc LB503
bpl LB4D6
lda LB506
cmp #$FB
bcs LB4DD
LB4D3: lda #$FF
rts
LB4D6: lda LB506
cmp #$05
bcs LB4D3
2018-01-30 16:57:36 +00:00
LB4DD: lda event_params_ycoord
2017-10-12 15:04:27 +00:00
sec
sbc LB504
sta LB506
2018-01-30 16:57:36 +00:00
lda event_params_ycoord+1
2017-10-12 15:04:27 +00:00
sbc LB505
bpl LB4F6
lda LB506
cmp #$FC
bcs LB4FD
LB4F6: lda LB506
cmp #$04
bcs LB4D3
LB4FD: lda #$00
rts
2017-12-31 20:32:47 +00:00
LB500: .byte 0
LB501: .byte 0
LB502: .byte 0
LB503: .byte 0
LB504: .byte 0
LB505: .byte 0
LB506: .byte 0
LB507: .byte 0
LB508: .byte 0
2018-01-15 18:08:50 +00:00
LB509: sta LD8E7
2017-10-12 15:04:27 +00:00
jsr LB53A
2018-01-15 18:08:50 +00:00
bit LD8E7
2017-10-12 15:04:27 +00:00
bvc LB51A
2018-01-21 23:37:55 +00:00
jsr draw_yes_no_all_cancel_buttons
2017-10-12 15:04:27 +00:00
jmp LB526
2018-01-29 05:18:00 +00:00
LB51A: MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::ok_button_rect
2018-01-21 23:37:55 +00:00
jsr draw_ok_label
2018-01-15 18:08:50 +00:00
LB526: bit LD8E7
2017-10-12 15:04:27 +00:00
bmi LB537
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::cancel_button_rect
2018-01-21 23:37:55 +00:00
jsr draw_cancel_label
2018-01-22 07:00:34 +00:00
LB537: jmp reset_state
2017-10-12 15:04:27 +00:00
2018-01-31 03:04:33 +00:00
LB53A: MGTK_RELAY_CALL MGTK::OpenWindow, winfoF
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::confirm_dialog_outer_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::confirm_dialog_inner_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-23 16:33:12 +00:00
create_window_with_alert_bitmap:
2018-01-31 03:04:33 +00:00
MGTK_RELAY_CALL MGTK::OpenWindow, winfoF
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintBits, alert_bitmap2_params
2018-01-21 23:37:55 +00:00
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::confirm_dialog_outer_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::confirm_dialog_inner_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
;;; ==================================================
.proc draw_dialog_label
2018-01-17 15:41:23 +00:00
stx $06+1
sta $06
2017-10-12 15:04:27 +00:00
tya
2018-01-22 07:00:34 +00:00
bmi :+
jmp skip
2017-10-12 15:04:27 +00:00
2018-01-22 07:00:34 +00:00
: tya
2017-10-12 15:04:27 +00:00
pha
2018-01-17 15:41:23 +00:00
lda $06
2017-10-12 15:04:27 +00:00
clc
adc #$01
sta $08
2018-01-17 15:41:23 +00:00
lda $06+1
2017-10-12 15:04:27 +00:00
adc #$00
2018-01-21 19:47:40 +00:00
sta $08+1
2017-10-12 15:04:27 +00:00
jsr LBD7B
sta $0A
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::TextWidth, $08
2017-10-12 15:04:27 +00:00
lsr $0C
ror $0B
lda #$C8
sec
sbc $0B
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2017-10-12 15:04:27 +00:00
lda #$00
sbc $0C
2018-01-21 18:56:50 +00:00
sta dialog_label_pos+1
2017-10-12 15:04:27 +00:00
pla
tay
2018-01-22 07:00:34 +00:00
skip: dey
2017-10-12 15:04:27 +00:00
tya
asl a
asl a
asl a
clc
adc $D6C1
2018-01-21 18:56:50 +00:00
sta dialog_label_pos+2
2017-10-12 15:04:27 +00:00
lda $D6C2
adc #$00
2018-01-21 18:56:50 +00:00
sta dialog_label_pos+3
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, dialog_label_pos
2018-01-17 15:41:23 +00:00
lda $06
ldx $06+1
2018-01-11 05:10:24 +00:00
jsr draw_text1
2018-01-21 18:56:50 +00:00
ldx dialog_label_pos
2017-10-12 15:04:27 +00:00
lda #$28
2018-01-21 18:56:50 +00:00
sta dialog_label_pos
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2018-01-21 23:37:55 +00:00
draw_ok_label:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::ok_label_pos
addr_call draw_text1, desktop_aux::str_ok_label
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_cancel_label:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::cancel_label_pos
addr_call draw_text1, desktop_aux::str_cancel_label
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_yes_label:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::yes_label_pos
addr_call draw_text1, desktop_aux::str_yes_label
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_no_label:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::no_label_pos
addr_call draw_text1, desktop_aux::str_no_label
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_all_label:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, desktop_aux::all_label_pos
addr_call draw_text1, desktop_aux::str_all_label
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_yes_no_all_cancel_buttons:
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::yes_button_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::no_button_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::all_button_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::cancel_button_rect
2018-01-21 23:37:55 +00:00
jsr draw_yes_label
jsr draw_no_label
jsr draw_all_label
jsr draw_cancel_label
2017-10-12 15:04:27 +00:00
lda #$40
2018-01-15 18:08:50 +00:00
sta LD8E7
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
erase_yes_no_all_cancel_buttons:
jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::yes_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::no_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::all_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_ok_cancel_buttons:
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::ok_button_rect
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::cancel_button_rect
2018-01-21 23:37:55 +00:00
jsr draw_ok_label
jsr draw_cancel_label
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-15 18:08:50 +00:00
sta LD8E7
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
erase_ok_cancel_buttons:
jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
draw_ok_button:
jsr set_fill_black
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, desktop_aux::ok_button_rect
2018-01-21 23:37:55 +00:00
jsr draw_ok_label
2017-10-12 15:04:27 +00:00
lda #$80
2018-01-15 18:08:50 +00:00
sta LD8E7
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
erase_ok_button:
jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
;;; ==================================================
.proc draw_text1
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
jsr LBD7B
2018-01-22 07:00:34 +00:00
beq done
2017-10-12 15:04:27 +00:00
sta $08
2018-01-17 15:41:23 +00:00
inc $06
2018-01-22 07:00:34 +00:00
bne :+
2018-01-17 15:41:23 +00:00
inc $06+1
2018-01-29 05:18:00 +00:00
: MGTK_RELAY_CALL MGTK::DrawText, $6
2018-01-22 07:00:34 +00:00
done: rts
.endproc
2017-10-12 15:04:27 +00:00
2018-01-14 05:20:59 +00:00
;;; ==================================================
2018-01-22 07:00:34 +00:00
.proc draw_centered_string
2018-01-14 05:20:59 +00:00
str := $6
str_data := $6
str_len := $8
str_width := $9
sta str ; input is length-prefixed string
stx str+1
2017-10-12 15:04:27 +00:00
jsr LBD7B
2018-01-14 05:20:59 +00:00
sta str_len
inc str_data ; point past length byte
bne :+
inc str_data+1
2018-01-29 05:18:00 +00:00
: MGTK_RELAY_CALL MGTK::TextWidth, str
2018-01-14 05:20:59 +00:00
lsr str_width+1 ; divide by two
ror str_width
2017-10-12 15:04:27 +00:00
lda #$01
sta LB76B
lda #$90
2018-01-14 05:20:59 +00:00
lsr LB76B ; divide by two
2017-10-12 15:04:27 +00:00
ror a
sec
2018-01-14 05:20:59 +00:00
sbc str_width
2018-01-15 05:16:36 +00:00
sta LD6B7
2017-10-12 15:04:27 +00:00
lda LB76B
2018-01-14 05:20:59 +00:00
sbc str_width+1
2018-01-15 05:16:36 +00:00
sta LD6B7+1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LD6B7
MGTK_RELAY_CALL MGTK::DrawText, str
2017-10-12 15:04:27 +00:00
rts
2018-01-14 05:20:59 +00:00
.endproc
;;; ==================================================
2017-10-12 15:04:27 +00:00
2017-12-31 20:32:47 +00:00
LB76B: .byte 0
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LD6BB
2018-01-17 15:41:23 +00:00
lda $06
ldx $06+1
2018-01-11 05:10:24 +00:00
jsr draw_text1
2017-10-12 15:04:27 +00:00
rts
LB781: stx $0B
sta $0A
ldy #$00
lda ($0A),y
tay
bne LB78D
rts
LB78D: dey
beq LB792
bpl LB793
LB792: rts
LB793: lda ($0A),y
and #$7F
cmp #$2F
beq LB79F
cmp #$2E
bne LB7A3
LB79F: dey
jmp LB78D
LB7A3: iny
lda ($0A),y
and #$7F
cmp #$41
bcc LB7B5
cmp #$5B
bcs LB7B5
clc
adc #$20
sta ($0A),y
LB7B5: dey
jmp LB78D
2018-01-31 05:42:26 +00:00
LB7B9: sta getwinport_params2::window_id
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::GetWinPort, getwinport_params2
2017-10-12 15:04:27 +00:00
ldy #$04
lda #$15
2018-01-01 05:16:41 +00:00
LB7CA := *+1
ldx #$D2
2018-01-29 05:18:00 +00:00
jsr MGTK_RELAY
2018-01-01 05:16:41 +00:00
rts
2017-10-12 15:04:27 +00:00
LB7CF: lda #$00
jmp LB7E8
LB7D4: lda #$01
jmp LB7E8
LB7D9: lda #$02
jmp LB7E8
LB7DE: lda #$03
jmp LB7E8
LB7E3: lda #$04
jmp LB7E8
LB7E8: pha
asl a
asl a
tax
lda LB808,x
sta LB886
2018-01-21 22:35:37 +00:00
lda LB808+1,x
2017-10-12 15:04:27 +00:00
sta LB887
2018-01-21 22:35:37 +00:00
lda LB808+2,x
2017-10-12 15:04:27 +00:00
sta LB888
2018-01-21 22:35:37 +00:00
lda LB808+3,x
2017-10-12 15:04:27 +00:00
sta LB889
pla
jmp LB88A
2018-01-21 22:35:37 +00:00
LB808: .addr test_ok_button,fill_ok_button
.addr test_cancel_button,fill_cancel_button
.addr test_yes_button,fill_yes_button
.addr test_no_button,fill_no_button
.addr test_all_button,fill_all_button
2018-01-01 05:16:41 +00:00
2018-01-21 22:35:37 +00:00
test_ok_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::InRect, desktop_aux::ok_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
test_cancel_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::InRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
test_yes_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::InRect, desktop_aux::yes_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
test_no_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::InRect, desktop_aux::no_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
test_all_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::InRect, desktop_aux::all_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
fill_ok_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::ok_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
fill_cancel_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::cancel_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
fill_yes_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::yes_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
fill_no_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::no_button_rect
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:35:37 +00:00
fill_all_button:
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::all_button_rect
2017-10-12 15:04:27 +00:00
rts
LB880: jmp (LB886)
LB883: jmp (LB888)
2017-12-31 20:32:47 +00:00
LB886: .byte 0
LB887: .byte 0
LB888: .byte 0
LB889: .byte 0
2017-10-12 15:04:27 +00:00
LB88A: sta LB8F3
lda #$00
sta LB8F2
2018-01-30 16:57:36 +00:00
LB892: MGTK_RELAY_CALL MGTK::GetEvent, event_params
lda event_params_kind
2018-01-29 05:18:00 +00:00
cmp #MGTK::button_up
2017-10-12 15:04:27 +00:00
beq LB8E3
2018-01-31 03:04:33 +00:00
lda winfoF
2018-01-30 16:57:36 +00:00
sta event_params
MGTK_RELAY_CALL MGTK::ScreenToWindow, event_params
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $D20D
2017-10-12 15:04:27 +00:00
jsr LB880
cmp #$80
beq LB8C9
lda LB8F2
beq LB8D1
jmp LB892
LB8C9: lda LB8F2
bne LB8D1
jmp LB892
2018-01-21 23:37:55 +00:00
LB8D1: jsr set_fill_black
2017-10-12 15:04:27 +00:00
jsr LB883
lda LB8F2
clc
adc #$80
sta LB8F2
jmp LB892
LB8E3: lda LB8F2
beq LB8EB
lda #$FF
rts
LB8EB: jsr LB883
lda LB8F3
rts
2017-12-31 20:32:47 +00:00
LB8F2: .byte 0
LB8F3: .byte 0
2017-10-12 15:04:27 +00:00
rts
LB8F5: jsr LBD3B
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda $D6B5
sta $08
2018-01-21 19:47:40 +00:00
lda $D6B5+1
sta $08+1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $6
2018-01-31 05:22:13 +00:00
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3
2018-01-15 18:08:50 +00:00
bit LD8EB
2017-10-12 15:04:27 +00:00
bpl LB92D
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::LAE6C
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-15 18:08:50 +00:00
sta LD8EB
2017-10-12 15:04:27 +00:00
beq LB93B
2018-01-29 05:18:00 +00:00
LB92D: MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::LAE6D
2017-10-12 15:04:27 +00:00
lda #$FF
2018-01-15 18:08:50 +00:00
sta LD8EB
2018-01-24 04:11:38 +00:00
LB93B: lda #<$D8EF
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 04:11:38 +00:00
lda #>$D8EF
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-15 18:08:50 +00:00
lda LD8EE
2017-10-12 15:04:27 +00:00
sta $08
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::DrawText, $6
MGTK_RELAY_CALL MGTK::SetTextBG, desktop_aux::LAE6D
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
rts
2018-01-24 05:37:41 +00:00
LB961: lda path_buf1
2017-10-12 15:04:27 +00:00
beq LB9B7
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
2018-01-21 23:37:55 +00:00
jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, LD6AB
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, penXOR
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::FrameRect, LD6AB
MGTK_RELAY_CALL MGTK::MoveTo, LD6B3
2018-01-31 05:22:13 +00:00
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3
2018-01-24 05:37:41 +00:00
addr_call draw_text1, path_buf1
addr_call draw_text1, path_buf2
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_2_spaces
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
LB9B7: rts
2018-01-30 16:57:36 +00:00
LB9B8: MGTK_RELAY_CALL MGTK::ScreenToWindow, event_params
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $D20D
MGTK_RELAY_CALL MGTK::InRect, LD6AB
2017-10-12 15:04:27 +00:00
cmp #$80
beq LB9D8
rts
LB9D8: jsr LBD3B
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda $D20D
2018-01-17 15:41:23 +00:00
cmp $06
2017-10-12 15:04:27 +00:00
lda $D20E
2018-01-17 15:41:23 +00:00
sbc $06+1
2017-10-12 15:04:27 +00:00
bcs LB9EE
jmp LBA83
LB9EE: jsr LBD3B
sta LBB09
stx LBB0A
2018-01-24 05:37:41 +00:00
ldx path_buf2
2017-10-12 15:04:27 +00:00
inx
2018-01-24 05:37:41 +00:00
lda #' '
sta path_buf2,x
inc path_buf2
lda #<path_buf2
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 05:37:41 +00:00
lda #>path_buf2
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-24 05:37:41 +00:00
lda path_buf2
2017-10-12 15:04:27 +00:00
sta $08
2018-01-29 05:18:00 +00:00
LBA10: MGTK_RELAY_CALL MGTK::TextWidth, $6
2017-10-12 15:04:27 +00:00
lda $09
clc
adc LBB09
sta $09
lda $0A
adc LBB0A
sta $0A
lda $09
cmp $D20D
lda $0A
sbc $D20E
bcc LBA42
dec $08
lda $08
cmp #$01
bne LBA10
2018-01-24 05:37:41 +00:00
dec path_buf2
2017-10-12 15:04:27 +00:00
jmp LBB05
LBA42: lda $08
2018-01-24 05:37:41 +00:00
cmp path_buf2
2017-10-12 15:04:27 +00:00
bcc LBA4F
2018-01-24 05:37:41 +00:00
dec path_buf2
2017-10-12 15:04:27 +00:00
jmp LBCC9
LBA4F: ldx #$02
2018-01-24 05:37:41 +00:00
ldy path_buf1
2017-10-12 15:04:27 +00:00
iny
2018-01-24 05:37:41 +00:00
LBA55: lda path_buf2,x
sta path_buf1,y
2017-10-12 15:04:27 +00:00
cpx $08
beq LBA64
iny
inx
jmp LBA55
2018-01-24 05:37:41 +00:00
LBA64: sty path_buf1
2017-10-12 15:04:27 +00:00
ldy #$02
ldx $08
inx
2018-01-24 05:37:41 +00:00
LBA6C: lda path_buf2,x
sta path_buf2,y
cpx path_buf2
2017-10-12 15:04:27 +00:00
beq LBA7C
iny
inx
jmp LBA6C
LBA7C: dey
2018-01-24 05:37:41 +00:00
sty path_buf2
2017-10-12 15:04:27 +00:00
jmp LBB05
2018-01-24 05:37:41 +00:00
LBA83: lda #<path_buf1
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 05:37:41 +00:00
lda #>path_buf1
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-24 05:37:41 +00:00
lda path_buf1
2017-10-12 15:04:27 +00:00
sta $08
2018-01-29 05:18:00 +00:00
LBA90: MGTK_RELAY_CALL MGTK::TextWidth, $6
2017-10-12 15:04:27 +00:00
lda $09
clc
2018-01-15 05:16:36 +00:00
adc LD6B3
2017-10-12 15:04:27 +00:00
sta $09
lda $0A
adc $D6B4
sta $0A
.byte $A5
LBAA9: ora #$CD
ora LA5D2
asl a
sbc $D20E
bcc LBABF
dec $08
lda $08
cmp #$01
bcs LBA90
jmp LBC5E
LBABF: inc $08
ldy #$00
ldx $08
2018-01-24 05:37:41 +00:00
LBAC5: cpx path_buf1
2017-10-12 15:04:27 +00:00
beq LBAD5
inx
iny
2018-01-24 05:37:41 +00:00
lda path_buf1,x
2017-10-12 15:04:27 +00:00
sta $D3C2,y
jmp LBAC5
LBAD5: iny
sty $D3C1
ldx #$01
ldy $D3C1
2018-01-24 05:37:41 +00:00
LBADE: cpx path_buf2
2017-10-12 15:04:27 +00:00
beq LBAEE
inx
iny
2018-01-24 05:37:41 +00:00
lda path_buf2,x
2017-10-12 15:04:27 +00:00
sta $D3C1,y
jmp LBADE
LBAEE: sty $D3C1
2018-01-15 18:08:50 +00:00
lda LD8EF
2017-10-12 15:04:27 +00:00
sta $D3C2
LBAF7: lda $D3C1,y
2018-01-24 05:37:41 +00:00
sta path_buf2,y
2017-10-12 15:04:27 +00:00
dey
bpl LBAF7
lda $08
2018-01-24 05:37:41 +00:00
sta path_buf1
2017-10-12 15:04:27 +00:00
LBB05: jsr LB961
rts
2017-12-31 20:32:47 +00:00
LBB09: .byte 0
LBB0A: .byte 0
2017-10-12 15:04:27 +00:00
LBB0B: sta LBB62
2018-01-24 05:37:41 +00:00
lda path_buf1
2017-10-12 15:04:27 +00:00
clc
2018-01-24 05:37:41 +00:00
adc path_buf2
2017-10-12 15:04:27 +00:00
cmp #$10
bcc LBB1A
rts
LBB1A: lda LBB62
2018-01-24 05:37:41 +00:00
ldx path_buf1
2017-10-12 15:04:27 +00:00
inx
2018-01-24 05:37:41 +00:00
sta path_buf1,x
2018-01-15 18:08:50 +00:00
sta str_1_char+1
2017-10-12 15:04:27 +00:00
jsr LBD3B
2018-01-24 05:37:41 +00:00
inc path_buf1
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda $D6B5
sta $08
2018-01-21 19:47:40 +00:00
lda $D6B5+1
sta $08+1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $6
2018-01-31 05:22:13 +00:00
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3
2018-01-15 18:08:50 +00:00
addr_call draw_text1, str_1_char
2018-01-24 05:37:41 +00:00
addr_call draw_text1, path_buf2
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
rts
2017-12-31 20:32:47 +00:00
LBB62: .byte 0
2018-01-24 05:37:41 +00:00
LBB63: lda path_buf1
2017-10-12 15:04:27 +00:00
bne LBB69
rts
2018-01-24 05:37:41 +00:00
LBB69: dec path_buf1
2017-10-12 15:04:27 +00:00
jsr LBD3B
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda $D6B5
sta $08
2018-01-21 19:47:40 +00:00
lda $D6B5+1
sta $08+1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $6
2018-01-31 05:22:13 +00:00
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3
2018-01-24 05:37:41 +00:00
addr_call draw_text1, path_buf2
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_2_spaces
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
rts
2018-01-24 05:37:41 +00:00
LBBA4: lda path_buf1
2017-10-12 15:04:27 +00:00
bne LBBAA
rts
2018-01-24 05:37:41 +00:00
LBBAA: ldx path_buf2
cpx #1
2017-10-12 15:04:27 +00:00
beq LBBBC
2018-01-24 05:37:41 +00:00
LBBB1: lda path_buf2,x
2017-10-12 15:04:27 +00:00
sta $D485,x
dex
2018-01-24 05:37:41 +00:00
cpx #1
2017-10-12 15:04:27 +00:00
bne LBBB1
2018-01-24 05:37:41 +00:00
LBBBC: ldx path_buf1
lda path_buf1,x
2017-10-12 15:04:27 +00:00
sta $D486
2018-01-24 05:37:41 +00:00
dec path_buf1
inc path_buf2
2017-10-12 15:04:27 +00:00
jsr LBD3B
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
lda $D6B5
sta $08
2018-01-21 19:47:40 +00:00
lda $D6B5+1
sta $08+1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, $6
2018-01-31 05:22:13 +00:00
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3
2018-01-24 05:37:41 +00:00
addr_call draw_text1, path_buf2
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_2_spaces
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
rts
2018-01-24 05:37:41 +00:00
LBC03: lda path_buf2
2017-10-12 15:04:27 +00:00
cmp #$02
bcs LBC0B
rts
2018-01-24 05:37:41 +00:00
LBC0B: ldx path_buf1
2017-10-12 15:04:27 +00:00
inx
lda $D486
2018-01-24 05:37:41 +00:00
sta path_buf1,x
inc path_buf1
ldx path_buf2
2017-10-12 15:04:27 +00:00
cpx #$03
bcc LBC2D
ldx #$02
LBC21: lda $D485,x
2018-01-24 05:37:41 +00:00
sta path_buf2,x
2017-10-12 15:04:27 +00:00
inx
2018-01-24 05:37:41 +00:00
cpx path_buf2
2017-10-12 15:04:27 +00:00
bne LBC21
2018-01-24 05:37:41 +00:00
LBC2D: dec path_buf2
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LD6B3
2018-01-31 05:22:13 +00:00
MGTK_RELAY_CALL MGTK::SetPortBits, setportbits_params3
2018-01-24 05:37:41 +00:00
addr_call draw_text1, path_buf1
addr_call draw_text1, path_buf2
2018-01-11 05:56:19 +00:00
addr_call draw_text1, str_2_spaces
2018-01-31 03:04:33 +00:00
lda winfoF
2017-10-12 15:04:27 +00:00
jsr LB7B9
rts
2018-01-24 05:37:41 +00:00
LBC5E: lda path_buf1
2017-10-12 15:04:27 +00:00
bne LBC64
rts
2018-01-24 05:37:41 +00:00
LBC64: ldx path_buf2
2017-10-12 15:04:27 +00:00
cpx #$01
beq LBC79
2018-01-24 05:37:41 +00:00
LBC6B: lda path_buf2,x
2017-10-12 15:04:27 +00:00
sta $D3C0,x
dex
cpx #$01
bne LBC6B
2018-01-24 05:37:41 +00:00
ldx path_buf2
2017-10-12 15:04:27 +00:00
LBC79: dex
stx $D3C1
2018-01-24 05:37:41 +00:00
ldx path_buf1
LBC80: lda path_buf1,x
2017-10-12 15:04:27 +00:00
sta $D485,x
dex
bne LBC80
2018-01-15 18:08:50 +00:00
lda LD8EF
2017-10-12 15:04:27 +00:00
sta $D485
2018-01-24 05:37:41 +00:00
inc path_buf1
lda path_buf1
sta path_buf2
lda path_buf1
2017-10-12 15:04:27 +00:00
clc
adc $D3C1
tay
pha
ldx $D3C1
beq LBCB3
LBCA6: lda $D3C1,x
2018-01-24 05:37:41 +00:00
sta path_buf2,y
2017-10-12 15:04:27 +00:00
dex
dey
2018-01-24 05:37:41 +00:00
cpy path_buf2
2017-10-12 15:04:27 +00:00
bne LBCA6
LBCB3: pla
2018-01-24 05:37:41 +00:00
sta path_buf2
2017-10-12 15:04:27 +00:00
lda #$00
2018-01-24 05:37:41 +00:00
sta path_buf1
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LD6B3
2017-10-12 15:04:27 +00:00
jsr LB961
rts
2018-01-24 05:37:41 +00:00
LBCC9: lda path_buf2
2017-10-12 15:04:27 +00:00
cmp #$02
bcs LBCD1
rts
2018-01-24 05:37:41 +00:00
LBCD1: ldx path_buf2
2017-10-12 15:04:27 +00:00
dex
txa
clc
2018-01-24 05:37:41 +00:00
adc path_buf1
2017-10-12 15:04:27 +00:00
pha
tay
2018-01-24 05:37:41 +00:00
ldx path_buf2
LBCDF: lda path_buf2,x
sta path_buf1,y
2017-10-12 15:04:27 +00:00
dex
dey
2018-01-24 05:37:41 +00:00
cpy path_buf1
2017-10-12 15:04:27 +00:00
bne LBCDF
pla
2018-01-24 05:37:41 +00:00
sta path_buf1
2017-10-12 15:04:27 +00:00
lda #$01
2018-01-24 05:37:41 +00:00
sta path_buf2
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::MoveTo, LD6B3
2017-10-12 15:04:27 +00:00
jsr LB961
rts
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2017-10-12 15:04:27 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
clc
2018-01-24 05:37:41 +00:00
adc path_buf1
2017-10-12 15:04:27 +00:00
pha
tax
2018-01-17 15:41:23 +00:00
LBD11: lda ($06),y
2018-01-24 05:37:41 +00:00
sta path_buf1,x
2017-10-12 15:04:27 +00:00
dey
dex
2018-01-24 05:37:41 +00:00
cpx path_buf1
2017-10-12 15:04:27 +00:00
bne LBD11
pla
2018-01-24 05:37:41 +00:00
sta path_buf1
2017-10-12 15:04:27 +00:00
rts
2018-01-24 05:37:41 +00:00
LBD22: ldx path_buf1
2017-10-12 15:04:27 +00:00
cpx #$00
beq LBD33
2018-01-24 05:37:41 +00:00
dec path_buf1
lda path_buf1,x
2017-10-12 15:04:27 +00:00
cmp #$2F
bne LBD22
LBD33: rts
jsr LBD22
jsr LB961
rts
2018-01-24 04:11:38 +00:00
LBD3B: lda #<$D444
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 04:11:38 +00:00
lda #>$D444
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-24 05:37:41 +00:00
lda path_buf1
2017-10-12 15:04:27 +00:00
sta $08
bne LBD51
2018-01-15 05:16:36 +00:00
lda LD6B3
2017-10-12 15:04:27 +00:00
ldx $D6B4
rts
2018-01-29 05:18:00 +00:00
LBD51: MGTK_RELAY_CALL MGTK::TextWidth, $6
2017-10-12 15:04:27 +00:00
lda $09
clc
2018-01-15 05:16:36 +00:00
adc LD6B3
2017-10-12 15:04:27 +00:00
tay
lda $0A
adc $D6B4
tax
tya
rts
LBD69: lda #$01
2018-01-24 05:37:41 +00:00
sta path_buf2
2018-01-15 18:08:50 +00:00
lda LD8EF
2017-10-12 15:04:27 +00:00
sta $D485
rts
LBD75: lda #$00
2018-01-24 05:37:41 +00:00
sta path_buf1
2017-10-12 15:04:27 +00:00
rts
LBD7B: ldx #$11
LBD7D: lda L0020,x
sta LBDB0,x
dex
bpl LBD7D
ldx #$11
LBD87: lda LBD9F,x
sta L0020,x
dex
bpl LBD87
jsr L0020
pha
ldx #$11
LBD95: lda LBDB0,x
sta L0020,x
dex
bpl LBD95
pla
rts
LBD9F: sta RAMRDON
sta RAMWRTON
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
sta RAMRDOFF
sta RAMWRTOFF
rts
2017-12-31 20:32:47 +00:00
LBDB0: .byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
.byte 0
2018-01-11 05:36:09 +00:00
LBDC4: ldx str_files
2018-01-15 05:23:48 +00:00
lda LD90A
2017-10-12 15:04:27 +00:00
bne LBDD9
2018-01-15 05:23:48 +00:00
lda LD909
2017-10-12 15:04:27 +00:00
cmp #$02
bcs LBDD9
2018-01-24 04:11:38 +00:00
lda #' '
2018-01-11 05:36:09 +00:00
sta str_files,x
2017-10-12 15:04:27 +00:00
rts
LBDD9: lda #$73
2018-01-11 05:36:09 +00:00
sta str_files,x
2017-10-12 15:04:27 +00:00
rts
2018-01-15 05:23:48 +00:00
LBDDF: lda LD909
2017-10-12 15:04:27 +00:00
sta LBE5F
2018-01-15 05:23:48 +00:00
lda LD90A
2018-01-21 22:45:48 +00:00
sta LBE5F+1
2018-01-11 05:36:09 +00:00
ldx #7 ; does this ever get overwritten???
lda #' '
: sta str_7_spaces,x
2017-10-12 15:04:27 +00:00
dex
2018-01-11 05:36:09 +00:00
bne :-
2017-10-12 15:04:27 +00:00
lda #$00
sta LBE62
ldy #$00
ldx #$00
LBDFE: lda #$00
sta LBE61
LBE03: lda LBE5F
cmp LBE57,x
2018-01-21 22:45:48 +00:00
lda LBE5F+1
sbc LBE57+1,x
2017-10-12 15:04:27 +00:00
bpl LBE35
lda LBE61
bne LBE1F
bit LBE62
bmi LBE1F
lda #$20
bne LBE28
LBE1F: ora #$30
pha
lda #$80
sta LBE62
pla
2018-01-13 03:06:55 +00:00
LBE28: sta str_7_spaces+2,y
2017-10-12 15:04:27 +00:00
iny
inx
inx
cpx #$08
beq LBE4E
jmp LBDFE
LBE35: inc LBE61
lda LBE5F
sec
sbc LBE57,x
sta LBE5F
2018-01-21 22:45:48 +00:00
lda LBE5F+1
sbc LBE57+1,x
sta LBE5F+1
2017-10-12 15:04:27 +00:00
jmp LBE03
LBE4E: lda LBE5F
2018-01-13 03:06:55 +00:00
ora #'0'
sta str_7_spaces+2,y
2017-10-12 15:04:27 +00:00
rts
2018-01-21 22:45:48 +00:00
LBE57: .word 10000,1000,100,10
LBE5F: .addr 0
2017-12-31 20:32:47 +00:00
LBE61: .byte 0
LBE62: .byte 0
2017-10-12 15:04:27 +00:00
LBE63: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
LBE68: lda ($06),y
2018-01-24 05:52:53 +00:00
sta path_buf0,y
2017-10-12 15:04:27 +00:00
dey
bpl LBE68
2018-01-25 04:20:39 +00:00
addr_call LB781, path_buf0
2017-10-12 15:04:27 +00:00
rts
LBE78: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2017-10-12 15:04:27 +00:00
tay
2018-01-17 15:41:23 +00:00
LBE7D: lda ($06),y
2018-01-24 05:37:41 +00:00
sta path_buf1,y
2017-10-12 15:04:27 +00:00
dey
bpl LBE7D
2018-01-24 05:37:41 +00:00
addr_call LB781, path_buf1
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
LBE8D: jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::LAE86
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
LBE9A: jsr set_fill_white
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::PaintRect, desktop_aux::LAE8E
2017-10-12 15:04:27 +00:00
rts
2018-01-21 23:37:55 +00:00
set_fill_white:
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::SetPenMode, pencopy
2017-10-12 15:04:27 +00:00
rts
2018-01-22 07:00:34 +00:00
reset_state:
2018-01-30 16:57:36 +00:00
MGTK_RELAY_CALL MGTK::InitPort, grafport3
MGTK_RELAY_CALL MGTK::SetPort, grafport3
2017-10-12 15:04:27 +00:00
rts
2018-01-21 03:33:15 +00:00
.assert * = $BEC4, error, "Segment length mismatch"
PAD_TO $BF00
2018-01-16 05:10:43 +00:00
2018-01-05 04:27:15 +00:00
.endproc ; desktop_main
2018-01-11 06:31:02 +00:00
desktop_main_pop_zp_addrs := desktop_main::pop_zp_addrs
desktop_main_push_zp_addrs := desktop_main::push_zp_addrs
2018-01-06 05:17:13 +00:00
;;; ==================================================
;;; Segment loaded into MAIN $800-$FFF
;;; ==================================================
;;; Appears to be init sequence - machine identification, etc
.proc desktop_800
2018-01-06 07:33:21 +00:00
2018-01-06 05:17:13 +00:00
DESKTOP_DEVICELIST := $E196
.org $800
start:
;; Detect machine type
;; See Apple II Miscellaneous #7: Apple II Family Identification
lda #0
sta iigs_flag
2018-01-13 03:06:55 +00:00
lda ID_BYTE_FBC0 ; 0 = IIc or IIc+
2018-01-06 05:17:13 +00:00
beq :+
sec ; Follow detection protocol
2018-01-13 03:06:55 +00:00
jsr ID_BYTE_FE1F ; RTS on pre-IIgs
2018-01-06 05:17:13 +00:00
bcs :+ ; carry clear = IIgs
lda #$80
sta iigs_flag
2018-01-13 03:06:55 +00:00
: ldx ID_BYTE_FBB3
ldy ID_BYTE_FBC0
2018-01-06 05:17:13 +00:00
cpx #$06 ; Ensure a IIe or later
beq :+
brk ; Otherwise (][, ][+, ///), just crash
: sta ALTZPON
lda LCBANK1
lda LCBANK1
sta SET80COL
2018-01-11 05:10:24 +00:00
stx id_byte_1 ; Stash so DeskTop can check machine bytes
sty id_byte_2 ; when ROM is banked out.
2018-01-06 05:17:13 +00:00
cpy #0
beq is_iic ; Now identify/store specific machine type.
2018-01-28 16:08:39 +00:00
bit iigs_flag ; (number is used in double-click timer)
2018-01-06 05:17:13 +00:00
bpl is_iie
2018-01-28 16:08:39 +00:00
lda #$FD ; IIgs
2018-01-11 05:10:24 +00:00
sta machine_type
2018-01-06 05:17:13 +00:00
jmp done_machine_id
2018-01-28 16:08:39 +00:00
is_iie: lda #$96 ; IIe
2018-01-11 05:10:24 +00:00
sta machine_type
2018-01-06 05:17:13 +00:00
jmp done_machine_id
2018-01-28 16:08:39 +00:00
is_iic: lda #$FA ; IIc
2018-01-11 05:10:24 +00:00
sta machine_type
2018-01-06 05:17:13 +00:00
jmp done_machine_id
iigs_flag: ; High bit set if IIgs detected.
.byte 0
done_machine_id:
sta CLR80VID
sta DHIRESON
sta DHIRESOFF
sta DHIRESON ; For good measure???
sta DHIRESOFF
sta SET80VID
2018-02-01 18:00:17 +00:00
sta DHIRESON ; Also AN3_OFF
sta HR2_ON ; For Le Chat Mauve: 560 B&W mode
sta HR3_ON
2018-01-06 05:17:13 +00:00
bit iigs_flag
bpl :+
;; Force B&W mode on the IIgs
lda NEWVIDEO
ora #(1<<5) ; B&W
sta NEWVIDEO
;; Look for /RAM
: ldx DEVCNT
inx
: lda DEVLST-1,x
sta DESKTOP_DEVICELIST,x
dex
bpl :-
ldx DEVCNT
: lda DEVLST,x
2018-01-18 17:32:25 +00:00
;; BUG: ProDOS Tech Note #21 says $B3,$B7,$BB or $BF could be /RAM
2018-01-06 05:17:13 +00:00
cmp #(1<<7 | 3<<4 | DT_RAM) ; unit_num for /RAM is Slot 3, Drive 2
beq found_ram
dex
bpl :-
bmi :+
found_ram:
jsr remove_device
2018-01-29 05:18:00 +00:00
: MGTK_RELAY_CALL MGTK::StartDeskTop, id_byte_1
MGTK_RELAY_CALL MGTK::SetMenu, splash_menu
MGTK_RELAY_CALL MGTK::SetZP1, zp_use_flag0
MGTK_RELAY_CALL MGTK::SetCursor, watch_cursor
MGTK_RELAY_CALL MGTK::ShowCursor
jsr desktop_main::push_zp_addrs
2018-01-24 04:11:38 +00:00
lda #<$EC63
2018-01-17 15:41:23 +00:00
sta $06
2018-01-24 04:11:38 +00:00
lda #>$EC63
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-06 05:17:13 +00:00
ldx #$01
L08D5: cpx #$7F
bne L08DF
jsr desktop_main::pop_zp_addrs
2018-01-06 05:17:13 +00:00
jmp L0909
L08DF: txa
pha
asl a
tax
2018-01-17 15:41:23 +00:00
lda $06
sta file_address_table,x
2018-01-17 15:41:23 +00:00
lda $06+1
sta file_address_table+1,x
2018-01-06 05:17:13 +00:00
pla
pha
ldy #$00
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-06 05:17:13 +00:00
iny
lda #$00
2018-01-17 15:41:23 +00:00
sta ($06),y
lda $06
2018-01-06 05:17:13 +00:00
clc
adc #$1B
2018-01-17 15:41:23 +00:00
sta $06
2018-01-06 05:17:13 +00:00
bcc L0903
2018-01-17 15:41:23 +00:00
inc $06+1
2018-01-06 05:17:13 +00:00
L0903: pla
tax
inx
jmp L08D5
L0909: sta RAMWRTON
lda #$00
tax
L090F: sta $1F00,x
sta $1E00,x
sta $1D00,x
sta $1C00,x
sta $1B00,x
inx
bne L090F
sta RAMWRTOFF
jmp L092F
L0927: PASCAL_STRING " Trash "
L092F: lda #$00
sta $DE9F
lda #$01
2018-01-13 03:06:55 +00:00
sta buf3len
2018-01-15 05:23:48 +00:00
sta LDD9E
2018-01-12 06:38:03 +00:00
jsr DESKTOP_FIND_SPACE
2018-01-06 05:17:13 +00:00
sta $EBFB
2018-01-13 03:06:55 +00:00
sta buf3
2018-01-21 03:02:34 +00:00
jsr desktop_main::file_address_lookup
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-06 05:17:13 +00:00
ldy #$02
lda #$70
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-06 05:17:13 +00:00
ldy #$07
lda #<desktop_aux::trash_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-06 05:17:13 +00:00
iny
lda #>desktop_aux::trash_icon
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-06 05:17:13 +00:00
iny
ldx #$00
L0960: lda L0927,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-06 05:17:13 +00:00
iny
inx
cpx L0927
bne L0960
lda L0927,x
2018-01-17 15:41:23 +00:00
sta ($06),y
2018-01-15 04:55:54 +00:00
lda DEVCNT
2018-01-06 05:17:13 +00:00
sta L0A01
inc L0A01
ldx #$00
2018-01-15 04:55:54 +00:00
L097C: lda DEVLST,x
2018-01-06 05:17:13 +00:00
and #$8F
cmp #$8B
beq L098E
inx
cpx L0A01
bne L097C
jmp L09F5
2018-01-15 04:55:54 +00:00
L098E: lda DEVLST,x
2018-01-06 05:17:13 +00:00
stx L09F8
sta L0A02
ldx #$11
lda L0A02
and #$80
beq L09A2
ldx #$21
L09A2: stx L09B5
lda L0A02
and #$70
lsr a
lsr a
lsr a
clc
adc L09B5
sta L09B5
2018-01-21 22:45:48 +00:00
L09B5 := *+1
lda $BF00 ; self-modified
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-06 05:17:13 +00:00
lda #$00
2018-01-17 15:41:23 +00:00
sta $06
2018-01-06 05:17:13 +00:00
ldy #$07
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
bne L09F5
ldy #$FB
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
and #$7F
bne L09F5
ldy #$FF
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
clc
adc #$03
2018-01-17 15:41:23 +00:00
sta $06
2018-01-06 05:17:13 +00:00
jsr L09F9
.byte 0
2018-01-21 22:45:48 +00:00
.addr L09FC
bcs L09F5
lda $1F00
2018-01-06 05:17:13 +00:00
cmp #$02
bcs L09F5
ldx L09F8
2018-01-15 04:55:54 +00:00
L09E6: lda DEVLST+1,x
sta DEVLST,x
2018-01-06 05:17:13 +00:00
inx
cpx L0A01
bne L09E6
2018-01-15 04:55:54 +00:00
dec DEVCNT
2018-01-06 05:17:13 +00:00
L09F5: jmp L0A03
L09F8: .byte 0
2018-01-17 15:41:23 +00:00
L09F9: jmp ($06)
2018-01-06 05:17:13 +00:00
2018-01-21 22:45:48 +00:00
L09FC: .byte $03
2018-01-06 05:17:13 +00:00
.byte 0
.byte 0
.byte $1F
.byte 0
L0A01: .byte 0
L0A02: .byte 0
2018-01-29 16:38:23 +00:00
L0A03: MGTK_RELAY_CALL MGTK::CheckEvents
MLI_RELAY_CALL GET_PREFIX, desktop_main::get_prefix_params
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckEvents
2018-01-06 05:17:13 +00:00
lda #$00
sta L0A92
jsr L0AE7
lda $1400
clc
adc $1401
2018-01-24 05:52:53 +00:00
sta LD343
2018-01-06 05:17:13 +00:00
lda #$00
2018-01-24 05:52:53 +00:00
sta LD343+1
2018-01-06 05:17:13 +00:00
lda $1400
sta L0A93
L0A3B: lda L0A92
cmp L0A93
beq L0A8F
jsr L0A95
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-06 05:17:13 +00:00
lda L0A92
jsr L0AA2
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2018-01-06 05:17:13 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
tay
2018-01-17 15:41:23 +00:00
L0A59: lda ($06),y
2018-01-06 05:17:13 +00:00
sta ($08),y
dey
bpl L0A59
ldy #$0F
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
sta ($08),y
lda L0A92
jsr L0ABC
2018-01-17 15:41:23 +00:00
sta $06
stx $06+1
2018-01-06 05:17:13 +00:00
lda L0A92
jsr L0AAF
sta $08
2018-01-21 19:47:40 +00:00
stx $08+1
2018-01-06 05:17:13 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
tay
2018-01-17 15:41:23 +00:00
L0A7F: lda ($06),y
2018-01-06 05:17:13 +00:00
sta ($08),y
dey
bpl L0A7F
inc L0A92
2018-01-12 09:16:37 +00:00
inc selector_menu
2018-01-06 05:17:13 +00:00
jmp L0A3B
L0A8F: jmp L0B09
L0A92: .byte 0
L0A93: .byte 0
.byte 0
2018-01-21 03:02:34 +00:00
L0A95: jsr desktop_main::a_times_4
2018-01-06 05:17:13 +00:00
clc
adc #$02
tay
txa
adc #$14
tax
tya
rts
2018-01-21 03:02:34 +00:00
L0AA2: jsr desktop_main::a_times_4
2018-01-06 05:17:13 +00:00
clc
adc #$1E
tay
txa
adc #$DB
tax
tya
rts
2018-01-21 03:02:34 +00:00
L0AAF: jsr desktop_main::a_times_6
2018-01-06 05:17:13 +00:00
clc
adc #$9E
tay
txa
adc #$DB
tax
tya
rts
2018-01-21 03:02:34 +00:00
L0ABC: jsr desktop_main::a_times_6
2018-01-06 05:17:13 +00:00
clc
adc #$82
tay
txa
adc #$15
tax
tya
rts
2018-01-14 07:24:19 +00:00
.proc open_params
params: .byte 3
2018-01-17 20:41:21 +00:00
path: .addr str_selector_list
2018-01-14 07:24:19 +00:00
buffer: .addr $1000
ref_num:.byte 0
.endproc
2018-01-06 05:17:13 +00:00
2018-01-17 20:41:21 +00:00
str_selector_list:
PASCAL_STRING "Selector.List"
2018-01-06 05:17:13 +00:00
2018-01-14 07:52:03 +00:00
.proc read_params
params: .byte 4
ref_num:.byte 0
buffer: .addr $1400
request:.word $400
trans: .word 0
.endproc
2018-01-06 05:17:13 +00:00
2018-01-14 07:24:19 +00:00
.proc close_params
params: .byte 1
ref_num:.byte 0
.endproc
2018-01-14 07:09:51 +00:00
2018-01-14 07:24:19 +00:00
L0AE7: MLI_RELAY_CALL OPEN, open_params
lda open_params::ref_num
2018-01-14 07:52:03 +00:00
sta read_params::ref_num
MLI_RELAY_CALL READ, read_params
2018-01-14 07:24:19 +00:00
MLI_RELAY_CALL CLOSE, close_params
2018-01-06 05:17:13 +00:00
rts
L0B09: addr_call desktop_main::measure_text1, str_6_spaces
2018-01-06 05:17:13 +00:00
sta L0BA0
stx L0BA1
addr_call desktop_main::measure_text1, str_items
2018-01-06 05:17:13 +00:00
clc
adc L0BA0
sta $EBF3
txa
adc L0BA1
sta $EBF4
addr_call desktop_main::measure_text1, str_k_in_disk
2018-01-06 05:17:13 +00:00
clc
adc L0BA0
sta $EBF5
txa
adc L0BA1
sta $EBF6
addr_call desktop_main::measure_text1, str_k_available
2018-01-06 05:17:13 +00:00
clc
adc L0BA0
sta $EBF7
txa
adc L0BA1
sta $EBF8
lda $EBF5
clc
adc $EBF7
sta $EBF9
lda $EBF6
adc $EBF8
sta $EBFA
lda $EBF3
clc
adc #$05
2018-01-13 03:06:55 +00:00
sta LEBE3
2018-01-06 05:17:13 +00:00
lda $EBF4
adc #$00
2018-01-13 03:06:55 +00:00
sta LEBE3+1
lda LEBE3
2018-01-06 05:17:13 +00:00
clc
adc $EBF5
sta $EBE7
2018-01-13 03:06:55 +00:00
lda LEBE3+1
2018-01-06 05:17:13 +00:00
adc $EBF6
sta $EBE8
lda $EBE7
clc
adc #$03
sta $EBE7
lda $EBE8
adc #$00
sta $EBE8
jmp L0BA2
L0BA0: .byte 0
L0BA1: .byte 0
2018-01-29 16:38:23 +00:00
L0BA2: MGTK_RELAY_CALL MGTK::CheckEvents
2018-01-14 08:24:50 +00:00
MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params
2018-01-06 05:17:13 +00:00
beq L0BB9
jmp L0D0A
2018-01-14 08:24:50 +00:00
L0BB9: lda get_file_info_params_type
2018-01-06 05:17:13 +00:00
cmp #$0F
beq L0BC3
jmp L0D0A
L0BC3: MLI_RELAY_CALL OPEN, open_params2
lda open_params2_ref_num
2018-01-14 07:52:03 +00:00
sta read_params2_ref_num
2018-01-14 07:24:19 +00:00
sta close_params2_ref_num
2018-01-14 07:52:03 +00:00
MLI_RELAY_CALL READ, read_params2
2018-01-06 05:17:13 +00:00
lda #$00
sta L0D04
sta L0D05
lda #$01
sta L0D08
lda $1425
and #$7F
sta L0D03
lda #$02
2018-01-12 09:16:37 +00:00
sta apple_menu
2018-01-06 05:17:13 +00:00
lda $1424
sta L0D07
lda $1423
sta L0D06
lda #$2B
2018-01-17 15:41:23 +00:00
sta $06
2018-01-06 05:17:13 +00:00
lda #$14
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-06 05:17:13 +00:00
L0C0C: ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
and #$0F
bne L0C17
jmp L0C81
L0C17: inc L0D04
ldy #$10
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
cmp #$F1
beq L0C25
jmp L0C81
L0C25: inc L0D05
2018-01-21 19:47:40 +00:00
lda #<buf
2018-01-06 05:17:13 +00:00
sta $08
2018-01-21 19:47:40 +00:00
lda #>buf
sta $08+1
2018-01-06 05:17:13 +00:00
lda #$00
sta L0D09
2018-01-12 09:16:37 +00:00
lda apple_menu
2018-01-06 05:17:13 +00:00
sec
sbc #$02
asl a
rol L0D09
asl a
rol L0D09
asl a
rol L0D09
asl a
rol L0D09
clc
adc $08
sta $08
lda L0D09
2018-01-21 19:47:40 +00:00
adc $08+1
sta $08+1
2018-01-06 05:17:13 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
and #$0F
sta ($08),y
tay
2018-01-17 15:41:23 +00:00
L0C60: lda ($06),y
2018-01-06 05:17:13 +00:00
sta ($08),y
dey
bne L0C60
lda $08
2018-01-21 19:47:40 +00:00
ldx $08+1
jsr desktop_main::L87BA
2018-01-06 05:17:13 +00:00
lda ($08),y
tay
L0C71: lda ($08),y
cmp #$2E
bne L0C7B
lda #$20
sta ($08),y
L0C7B: dey
bne L0C71
2018-01-12 09:16:37 +00:00
inc apple_menu
2018-01-06 05:17:13 +00:00
L0C81: lda L0D05
cmp #$08
bcc L0C8B
jmp L0CCB
L0C8B: lda L0D04
cmp L0D03
bne L0C96
jmp L0CCB
L0C96: inc L0D08
lda L0D08
cmp L0D07
bne L0CBA
2018-01-14 07:52:03 +00:00
MLI_RELAY_CALL READ, read_params2
2018-01-06 05:17:13 +00:00
lda #$04
2018-01-17 15:41:23 +00:00
sta $06
2018-01-06 05:17:13 +00:00
lda #$14
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-06 05:17:13 +00:00
lda #$00
sta L0D08
jmp L0C0C
2018-01-17 15:41:23 +00:00
L0CBA: lda $06
2018-01-06 05:17:13 +00:00
clc
adc L0D06
2018-01-17 15:41:23 +00:00
sta $06
lda $06+1
2018-01-06 05:17:13 +00:00
adc #$00
2018-01-17 15:41:23 +00:00
sta $06+1
2018-01-06 05:17:13 +00:00
jmp L0C0C
2018-01-14 07:24:19 +00:00
L0CCB: MLI_RELAY_CALL CLOSE, close_params2
2018-01-06 05:17:13 +00:00
jmp L0D0A
.proc open_params2
2018-01-14 07:24:19 +00:00
params: .byte 3
2018-01-17 20:41:21 +00:00
path: .addr str_desk_acc
2018-01-14 07:24:19 +00:00
buffer: .addr $1000
ref_num:.byte 0
.endproc
open_params2_ref_num := open_params2::ref_num
2018-01-14 07:24:19 +00:00
2018-01-14 07:52:03 +00:00
.proc read_params2
params: .byte 4
ref_num:.byte 0
buffer: .addr $1400
request:.word $200
trans: .word 0
.endproc
read_params2_ref_num := read_params2::ref_num
2018-01-14 08:24:50 +00:00
.proc get_file_info_params
params: .byte $A
2018-01-17 20:41:21 +00:00
path: .addr str_desk_acc
2018-01-14 08:24:50 +00:00
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
get_file_info_params_type := get_file_info_params::type
2018-01-06 05:17:13 +00:00
.byte 0
2018-01-14 07:24:19 +00:00
.proc close_params2
params: .byte 1
ref_num:.byte 0
.endproc
close_params2_ref_num := close_params2::ref_num
2018-01-06 05:17:13 +00:00
2018-01-17 20:41:21 +00:00
str_desk_acc:
2018-01-06 05:17:13 +00:00
PASCAL_STRING "Desk.acc"
L0D03: .byte 0
L0D04: .byte 0
L0D05: .byte 0
L0D06: .byte 0
L0D07: .byte 0
L0D08: .byte 0
L0D09: .byte 0
L0D0A: ldy #$00
2018-01-17 03:55:13 +00:00
sty desktop_main::L599F
2018-01-06 05:17:13 +00:00
sty L0E33
L0D12: lda L0E33
asl a
tay
lda $DB00,y
sta $08
2018-01-21 19:47:40 +00:00
lda $DB00+1,y
sta $08+1
2018-01-06 05:17:13 +00:00
ldy L0E33
2018-01-15 04:55:54 +00:00
lda DEVLST,y
2018-01-06 05:17:13 +00:00
pha
txa
pha
tya
pha
2018-01-13 03:06:55 +00:00
inc buf3len
2018-01-15 05:23:48 +00:00
inc LDD9E
2018-01-15 04:55:54 +00:00
lda DEVLST,y
jsr desktop_main::get_device_info
2018-01-06 05:17:13 +00:00
sta L0E34
2018-01-29 16:38:23 +00:00
MGTK_RELAY_CALL MGTK::CheckEvents
2018-01-06 05:17:13 +00:00
pla
tay
pla
tax
pla
pha
lda L0E34
cmp #$28
bne L0D64
ldy L0E33
2018-01-15 04:55:54 +00:00
lda DEVLST,y
2018-01-06 05:17:13 +00:00
and #$0F
beq L0D6D
ldx L0E33
jsr remove_device
jmp L0E25
L0D64: cmp #$57
bne L0D6D
lda #$F9
2018-01-17 03:55:13 +00:00
sta desktop_main::L599F
2018-01-06 05:17:13 +00:00
L0D6D: pla
pha
and #$0F
sta L0E32
cmp #$00
bne L0D7F
2018-01-12 09:16:37 +00:00
addr_jump L0DAD, str_slot_drive
2018-01-06 05:17:13 +00:00
L0D7F: cmp #$0B
beq L0DA9
cmp #$04
bne L0DC2
pla
pha
2018-01-21 22:35:37 +00:00
and #$70 ; Compute $CnFB
2018-01-06 05:17:13 +00:00
lsr a
lsr a
lsr a
lsr a
ora #$C0
sta L0D96
2018-01-21 22:35:37 +00:00
L0D96 := *+2
lda $C7FB ; self-modified
2018-01-06 05:17:13 +00:00
and #$01
bne L0DA2
2018-01-12 09:16:37 +00:00
addr_jump L0DAD, str_profile_slot_x
2018-01-06 05:17:13 +00:00
2018-01-12 09:16:37 +00:00
L0DA2: addr_jump L0DAD, str_ramcard_slot_x
2018-01-06 05:17:13 +00:00
2018-01-12 09:16:37 +00:00
L0DA9: lda #<str_unidisk_xy
ldx #>str_unidisk_xy
2018-01-17 15:41:23 +00:00
L0DAD: sta $06
stx $06+1
2018-01-06 05:17:13 +00:00
ldy #$00
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
sta L0DBE
L0DB8: iny
2018-01-17 15:41:23 +00:00
lda ($06),y
2018-01-06 05:17:13 +00:00
sta ($08),y
2018-01-21 22:45:48 +00:00
L0DBE := *+1
cpy #0
2018-01-06 05:17:13 +00:00
bne L0DB8
tay
L0DC2: pla
pha
and #$70
lsr a
lsr a
lsr a
lsr a
ora #$30
tax
lda L0E32
cmp #$04
bne L0DF0
pla
pha
2018-01-21 22:35:37 +00:00
and #$70 ; compute $CnFB
2018-01-06 05:17:13 +00:00
lsr a
lsr a
lsr a
lsr a
ora #$C0
sta L0DE3
2018-01-21 22:35:37 +00:00
L0DE3 := *+2
lda $C7FB ; self-modified
2018-01-06 05:17:13 +00:00
and #$01
bne L0DEC
ldy #$0E
bne L0DFA
L0DEC: ldy #$0E
bne L0DFA
L0DF0: cmp #$0B
bne L0DF8
ldy #$0F
bne L0DFA
L0DF8: ldy #$06
L0DFA: txa
sta ($08),y
lda L0E32
and #$0F
cmp #$04
beq L0E21
pla
pha
rol a
lda #$00
adc #$01
ora #$30
pha
lda L0E32
and #$0F
bne L0E1C
ldy #$10
pla
bne L0E1F
L0E1C: ldy #$11
pla
L0E1F: sta ($08),y
L0E21: pla
inc L0E33
L0E25: lda L0E33
2018-01-15 04:55:54 +00:00
cmp DEVCNT
2018-01-06 05:17:13 +00:00
beq L0E2F
bcs L0E4C
L0E2F: jmp L0D12
L0E32: .byte 0
L0E33: .byte 0
L0E34: .byte 0
;; Remove device num in X from devices list
.proc remove_device
dex
L0E36: inx
lda DEVLST+1,x
sta DEVLST,x
lda $E1A0+1,x
sta $E1A0,x
cpx DEVCNT
bne L0E36
dec DEVCNT
rts
.endproc
L0E4C: lda DEVCNT
clc
adc #$03
sta $E270
lda #$00
sta L0EAF
tay
tax
L0E5C: lda DEVLST,y
and #$70
beq L0EA8
lsr a
lsr a
lsr a
lsr a
cmp L0EAF
beq L0E70
cmp #$02
bne L0E79
L0E70: cpy DEVCNT
beq L0EA8
iny
jmp L0E5C
L0E79: sta L0EAF
clc
adc #$30
sta L0EAE
txa
pha
asl a
tax
lda L0EB0,x
sta sta_addr
lda L0EB0+1,x
sta sta_addr+1
2018-01-13 03:06:55 +00:00
ldx s00
2018-01-06 05:17:13 +00:00
dex
lda L0EAE
sta_addr := *+1
2018-01-17 03:36:54 +00:00
sta dummy1234,x
2018-01-06 05:17:13 +00:00
pla
tax
inx
cpy DEVCNT
beq L0EA8
iny
jmp L0E5C
2018-01-12 09:16:37 +00:00
L0EA8: stx startup_menu
2018-01-06 05:17:13 +00:00
jmp L0EE1
L0EAE: .byte 0
L0EAF: .byte 0
2018-01-13 03:06:55 +00:00
L0EB0: .addr s00,s01,s02,s03,s04,s05,s06
2018-01-14 08:24:50 +00:00
.proc get_file_info_params2
params: .byte $A
path: .addr desktop_main::L4862
2018-01-14 08:24:50 +00:00
access: .byte 0
type: .byte 0
auxtype:.word 0
storage:.byte 0
blocks: .word 0
mdate: .word 0
mtime: .word 0
cdate: .word 0
ctime: .word 0
.endproc
2018-01-06 05:17:13 +00:00
.byte 0
2018-01-14 08:01:19 +00:00
.proc get_prefix_params
params: .byte 1
buffer: .addr desktop_main::L4862
2018-01-14 08:01:19 +00:00
.endproc
2018-01-14 07:09:51 +00:00
2018-01-06 05:17:13 +00:00
L0ED4: PASCAL_STRING "System/Start"
2018-01-14 07:09:51 +00:00
2018-01-06 05:17:13 +00:00
L0EE1: lda #$00
2018-01-17 03:36:54 +00:00
sta desktop_main::L4861
jsr desktop_main::L4AFD
2018-01-06 05:17:13 +00:00
cmp #$80
beq L0EFE
2018-01-14 08:01:19 +00:00
MLI_RELAY_CALL GET_PREFIX, get_prefix_params
2018-01-06 05:17:13 +00:00
bne L0F34
dec desktop_main::L4862
2018-01-06 05:17:13 +00:00
jmp L0F05
2018-01-24 04:11:38 +00:00
L0EFE: addr_call desktop_main::L4B3A, desktop_main::L4862
L0F05: ldx desktop_main::L4862
L0F08: lda desktop_main::L4862,x
2018-01-24 04:11:38 +00:00
cmp #'/'
2018-01-06 05:17:13 +00:00
beq L0F12
dex
bne L0F08
L0F12: ldy #$00
L0F14: inx
iny
lda L0ED4,y
sta desktop_main::L4862,x
2018-01-06 05:17:13 +00:00
cpy L0ED4
bne L0F14
stx desktop_main::L4862
2018-01-14 08:24:50 +00:00
MLI_RELAY_CALL GET_FILE_INFO, get_file_info_params2
2018-01-06 05:17:13 +00:00
bne L0F34
lda #$80
2018-01-17 03:36:54 +00:00
sta desktop_main::L4861
2018-01-29 16:38:23 +00:00
L0F34: MGTK_RELAY_CALL MGTK::CheckEvents
2018-01-29 05:18:00 +00:00
MGTK_RELAY_CALL MGTK::SetMenu, desktop_aux::desktop_menu
MGTK_RELAY_CALL MGTK::SetCursor, pointer_cursor
2018-01-06 05:17:13 +00:00
lda #$00
sta $EC25
jsr desktop_main::L66A2
jsr desktop_main::L678A
jsr desktop_main::L670C
2018-01-29 05:18:00 +00:00
jmp MGTK::MLI
2018-01-06 05:17:13 +00:00
2018-01-21 03:33:15 +00:00
.assert * = $0F60, error, "Segment length mismatch"
PAD_TO $1000
2018-01-21 18:44:26 +00:00
2018-01-06 05:17:13 +00:00
.endproc ; desktop_800