diff --git a/desktop/Makefile b/desktop/Makefile index 4a937e4..6e3636d 100644 --- a/desktop/Makefile +++ b/desktop/Makefile @@ -3,7 +3,7 @@ CC65 = ~/dev/cc65/bin CAFLAGS = --target apple2enh --list-bytes 0 CCFLAGS = --config asm.cfg -TARGETS = s0_loader.built s123_aux.built s4_main1.built +TARGETS = loader.built a2d.built desktop.built .PHONY: clean all all: $(TARGETS) @@ -21,6 +21,6 @@ clean: $(CC65)/ld65 $(CCFLAGS) -o $@ $< check: - diff s0_loader.built orig/DESKTOP2_s0_loader - diff s123_aux.built orig/DESKTOP2_s123_aux - diff s4_main1.built orig/DESKTOP2_s4_main1 + diff loader.built orig/DESKTOP2_s0_loader + diff a2d.built orig/DESKTOP2_s1_a2d + diff desktop.built orig/DESKTOP2_s2_desktop diff --git a/desktop/README.md b/desktop/README.md index b2a0383..14c1c2a 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -29,6 +29,8 @@ The file is broken down into multiple segments: ### GUI Library "A2D" +`a2d.s` + AUX $4000-$8DFF is the GUI library used for the DeskTop application and (presumably) for disk copy and Selector apps (TBD). @@ -38,12 +40,14 @@ Entry point is $4000 with a ProDOS MLI-style calling convention ### "DeskTop" Application +`desktop.s` + DeskTop application code is in the lower 48k of both Aux and Main: * Aux $8E00-$BFFF - sitting above the GUI library * Main $4000-$BEFF -And in the Aux language card area (accessible from both aux and main code) are relays, buffers and resources: +...and in the Aux language card area (accessible from both aux and main code) are relays, buffers and resources: * Aux $D000-$ECFF - relays and other aux/main helpers, resources (menus, strings, window) * Aux $ED00-$FAFF - hole for data buffer diff --git a/desktop/s123_aux.s b/desktop/a2d.s similarity index 59% rename from desktop/s123_aux.s rename to desktop/a2d.s index b338e1f..e4c3dfd 100644 --- a/desktop/s123_aux.s +++ b/desktop/a2d.s @@ -1,4 +1,4 @@ - .setcpu "65C02" + .setcpu "65C02" ; TODO: Reduce down to 6502 .include "apple2.inc" .include "../inc/apple2.inc" @@ -8,16 +8,16 @@ .include "../a2d.inc" .include "../desktop.inc" - -.proc a2d + ;; Is this actually needed, or a coincidence? +desktop_win18_state := $D63F ;;; ================================================== ;;; A2D - the GUI library ;;; ================================================== +.proc a2d .org $4000 - ;;; ================================================== ;;; ZP Usage @@ -9308,5220 +9308,4 @@ glyph_bitmaps: .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 -.endproc ; a2d - -.proc desktop -;;; ================================================== -;;; DeskTop - the actual application -;;; ================================================== - - ;; Entry point for "DESKTOP" - .assert * = DESKTOP, error, "DESKTOP entry point must be at $8E00" - jmp DESKTOP_DIRECT - -.macro A2D_RELAY2_CALL call, addr - ldy #call - .if .paramcount = 1 - lda #0 - ldx #0 - .else - lda #<(addr) - ldx #>(addr) - .endif - jsr A2D_RELAY2 -.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 - -.proc draw_bitmap_params2 -left: .word 0 -top: .word 0 -addr: .addr 0 -stride: .word 0 -hoff: .word 0 -voff: .word 0 -width: .word 0 -height: .word 0 -.endproc - -.proc draw_bitmap_params -left: .word 0 -top: .word 0 -addr: .addr 0 -stride: .word 0 -hoff: .word 0 -voff: .word 0 -.endproc - - .byte $00,$00 -L8E43: .byte $00,$00 - -.proc fill_rect_params6 -left: .word 0 -top: .word 0 -right: .word 0 -bottom: .word 0 -.endproc - -.proc measure_text_params -addr: .addr text_buffer -length: .byte 0 -width: .word 0 -.endproc -set_text_mask_params := measure_text_params::width + 1 ; re-used - -.proc draw_text_params -addr: .addr text_buffer -length: .byte 0 -.endproc - -text_buffer: - .res 19, 0 - -white_pattern2: - .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 - -.proc query_target_params2 -queryx: .word 0 -queryy: .word 0 -element:.byte 0 -id: .byte 0 -.endproc - -.proc query_screen_params -left: .word 0 -top: .word 0 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -L934D: -hoff: .word 0 -voff: .word 0 -width: .word 560-1 -height: .word 192-1 -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -mode: .byte $96 ; ??? -tmask: .byte 0 -font: .addr A2D_DEFAULT_FONT -.endproc - -.proc query_state_params -id: .byte 0 -addr: .addr set_state_params -.endproc - -.proc set_state_params -left: .word 0 -top: .word 0 -addr: .addr 0 -stride: .word 0 -hoff: .word 0 -voff: .word 0 -width: .word 0 -height: .word 0 -pattern:.res 8, 0 -mskand: .byte 0 -mskor: .byte 0 -xpos: .word 0 -ypos: .word 0 -hthick: .byte 0 -vthick: .byte 0 -mode: .byte 0 -tmask: .byte 0 -font: .addr 0 -.endproc - - .byte $00,$00,$00 - .byte $00,$FF,$80 - - ;; Used for FILL_MODE params -const0a:.byte 0 -const1a:.byte 1 -const2a:.byte 2 -const3a:.byte 3 -const4a:.byte 4 - .byte 5, 6, 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 - .addr LA2A6 ; $0C REDRAW_ICONS - .addr L9EFB ; $0D - .addr L958F ; $0E - -.macro DESKTOP_DIRECT_CALL op, addr, label - jsr DESKTOP_DIRECT - .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: - jsr $0000 - - tay - ldx #$03 -L9409: pla - sta $06,x - dex - cpx #$FF - bne L9409 - tya - rts - -call_params: .addr 0 - -.proc set_pos_params2 -xcoord: .word 0 -ycoord: .word 0 -.endproc - -;;; ================================================== - -;;; DESKTOP $01 IMPL - -L9419: - ldy #$00 - lda ($06),y - ldx L8E95 - beq L9430 - dex -L9423: .byte $DD - .byte $96 -L9425: stx $05F0 - dex - bpl L9423 - bmi L9430 - 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 - -;;; ================================================== - -;;; DESKTOP $02 IMPL - -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 - -;;; ================================================== - -;;; DESKTOP $03 IMPL - -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 - -;;; ================================================== - -;;; DESKTOP $04 IMPL - -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 - A2D_CALL A2D_SET_FILL_MODE, const0a - 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 - -;;; ================================================== - -;;; DESKTOP $0E IMPL - -L958F: - ldy #$00 - lda ($06),y - asl a - tax - lda L8F15,x - sta $06 - lda L8F15+1,x - sta $07 - jmp LA39D - -;;; ================================================== - -;;; DESKTOP $05 IMPL - -L95A2: - jmp L9625 - -L95A5: -L95A6 := * + 1 - .res 128, 0 - -L9625: lda L9454 - beq L9639 - lda L9017 - sta L95A5 - DESKTOP_DIRECT_CALL $B, $95A5 - 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 - sta $09 - 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 - DESKTOP_DIRECT_CALL $2, $95A5 - pla - tax - inx - txa - pha - jmp L967A - -;;; ================================================== - -;;; DESKTOP $06 IMPL - -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 - sta $09 - ldy #$02 - lda ($08),y - and #$0F - ldy #$00 - cmp ($06),y - bne L969D - DESKTOP_DIRECT_CALL $4, $9695 - jmp L969D -L96CF: lda #$00 - rts - -;;; ================================================== - -;;; DESKTOP $07 IMPL - -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 - sta $09 - 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 - -;;; ================================================== - -;;; DESKTOP $08 IMPL - -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 - -;;; ================================================== - -;;; DESKTOP $09 IMPL - -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 - sta set_pos_params2,y - dey - bpl L978B - lda $06 - sta $08 - lda $07 - sta $09 - ldy #$05 - lda ($06),y - sta L97F5 - A2D_CALL A2D_SET_POS, set_pos_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 - A2D_CALL $17, 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 - -;;; ================================================== - -;;; DESKTOP $0A IMPL - -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 -L9845: A2D_CALL $2C, L933E - lda L933E - cmp #$04 - beq L9857 -L9852: lda #$02 - jmp L9C65 - -L9857: lda query_target_params2::queryx - sec - sbc L9C8E - sta L982C - lda query_target_params2::queryx+1 - sbc L9C8F - sta L982D - lda query_target_params2::queryy - sec - sbc L9C90 - sta L982E - lda query_target_params2::queryy+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+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 - A2D_CALL A2D_QUERY_SCREEN, query_screen_params - ldx #$07 -L98E3: lda query_screen_params::L934D,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 - DESKTOP_DIRECT_CALL $D, $9834 - beq L9954 - jsr LA18A - lda L9C74 - cmp L9016 - beq L9936 - jsr LA365 - lda $08 - sec - sbc #$22 - sta $08 - bcs L992D - dec $09 -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 - inc $09 -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+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 - lda $09 - adc #$00 - sta $09 - jmp L9972 - -L99FC: A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 - A2D_CALL A2D_SET_FILL_MODE, const2a - A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer -L9A0E: A2D_CALL $2C, L933E - lda L933E - cmp #$04 - beq L9A1E - jmp L9BA5 - -L9A1E: ldx #$03 -L9A20: lda query_target_params2,x - cmp L9C92,x - bne L9A31 - dex - bpl L9A20 - jsr L9E14 - jmp L9A0E - -L9A31: ldx #$03 -L9A33: lda query_target_params2,x - sta L9C92,x - dex - bpl L9A33 - lda L9830 - beq L9A84 - lda L9831 - sta query_target_params2::id - DESKTOP_DIRECT_CALL $9, $933F - lda query_target_params2::element - cmp L9830 - beq L9A84 - A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 - A2D_CALL A2D_SET_FILL_MODE, const2a - A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer - DESKTOP_DIRECT_CALL $B, $9830 - A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 - A2D_CALL A2D_SET_FILL_MODE, const2a - A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer - lda #$00 - sta L9830 -L9A84: lda query_target_params2::queryx - sec - sbc L9C8E - sta L9C96 - lda query_target_params2::queryx+1 - sbc L9C8F - sta L9C97 - lda query_target_params2::queryy - sec - sbc L9C90 - sta L9C98 - lda query_target_params2::queryy+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 - .byte $50 -L9B4E: .byte $03 - jmp L9A0E - -L9B52: A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer - 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 - inc $09 -L9B99: jmp L9B60 - -L9B9C: A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer - jmp L9A0E - -L9BA5: A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer - lda L9830 - beq L9BB9 - DESKTOP_DIRECT_CALL $B, $9830 - jmp L9C63 - -L9BB9: A2D_CALL A2D_QUERY_TARGET, query_target_params2 - lda query_target_params2::id - cmp L9832 - beq L9BE1 - bit L9833 - bmi L9BDC - lda query_target_params2::id - bne L9BD4 -L9BD1: jmp L9852 - -L9BD4: ora #$80 - sta L9830 - jmp L9C63 - -L9BDC: lda L9832 - beq L9BD1 -L9BE1: jsr LA365 - A2D_CALL A2D_QUERY_SCREEN, query_screen_params - A2D_CALL A2D_SET_STATE, query_screen_params - 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 - A2D_CALL A2D_SET_FILL_MODE, const0a - jsr LA39D - pla - tax - jmp L9BF3 - -L9C18: jsr LA382 - ldx L9016 - dex - txa - pha - lda #drag_outline_buffer - sta $09 -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 - inc $09 -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 - -L9DFA: lda query_target_params2::queryx+1 - sta L9C8F - lda query_target_params2::queryx - sta L9C8E - rts - -L9E07: lda query_target_params2::queryy+1 - sta L9C91 - lda query_target_params2::queryy - sta L9C90 - rts - -L9E14: bit L9833 - bpl L9E1A - rts - -L9E1A: jsr LA365 -L9E1D: A2D_CALL A2D_QUERY_TARGET, query_target_params2 - lda query_target_params2::element - bne L9E2B - sta query_target_params2::id -L9E2B: DESKTOP_DIRECT_CALL $9, $933F - lda query_target_params2::element - 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 - A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 - A2D_CALL A2D_SET_FILL_MODE, const2a - A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer - DESKTOP_DIRECT_CALL $2, $9830 - A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 - A2D_CALL A2D_SET_FILL_MODE, const2a - A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer -L9E97: A2D_CALL A2D_QUERY_SCREEN, query_screen_params - A2D_CALL A2D_SET_STATE, query_screen_params - A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 - A2D_CALL A2D_SET_FILL_MODE, const2a - jsr LA382 - rts - -L9EB3: .byte 0 -L9EB4: asl a - tay - lda L8F15+1,y - tax - lda L8F15,y - rts - -;;; ================================================== - -;;; DESKTOP $08 IMPL - -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 - DESKTOP_DIRECT_CALL $3, $9EC2 - lda #0 - rts - - rts - -;;; ================================================== - -;;; 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 - lda draw_bitmap_params2::addr - sta $08 - lda draw_bitmap_params2::addr+1 - sta $09 - ldy #$0B -L9FCF: lda ($08),y - sta draw_bitmap_params2::addr,y - dey - bpl L9FCF - bit L9F92 - bpl L9FDF - jsr LA12C -L9FDF: jsr LA382 - ldy #$09 -L9FE4: lda ($06),y - sta fill_rect_params6::bottom,y - iny - cpy #$1D - bne L9FE4 -L9FEE: lda draw_text_params::length - sta measure_text_params::length - A2D_CALL A2D_MEASURE_TEXT, measure_text_params - lda measure_text_params::width - cmp draw_bitmap_params2::width - bcs LA010 - inc draw_text_params::length - ldx draw_text_params::length - lda #$20 - sta text_buffer-1,x - jmp L9FEE - -LA010: lsr a - sta set_pos_params2::xcoord+1 - lda draw_bitmap_params2::width - lsr a - sta set_pos_params2 - lda set_pos_params2::xcoord+1 - sec - sbc set_pos_params2::xcoord - sta set_pos_params2::xcoord - lda draw_bitmap_params2::left - sec - sbc set_pos_params2::xcoord - sta set_pos_params2::xcoord - lda draw_bitmap_params2::left+1 - sbc #$00 - sta set_pos_params2::xcoord+1 - lda draw_bitmap_params2::top - clc - adc draw_bitmap_params2::height - sta set_pos_params2::ycoord - lda draw_bitmap_params2::top+1 - adc #$00 - sta set_pos_params2::ycoord+1 - lda set_pos_params2::ycoord - clc - adc #$01 - sta set_pos_params2::ycoord - lda set_pos_params2::ycoord+1 - adc #$00 - sta set_pos_params2::ycoord+1 - lda set_pos_params2::ycoord - clc - adc a2d::glyph_height - sta set_pos_params2::ycoord - lda set_pos_params2::ycoord+1 - adc #$00 - sta set_pos_params2::ycoord+1 - ldx #$03 -LA06E: lda set_pos_params2,x - sta L9F94,x - dex - bpl LA06E - bit L9F92 - bvc LA097 - A2D_CALL A2D_QUERY_SCREEN, query_screen_params - jsr LA63F -LA085: jsr LA6A3 - jsr LA097 - lda L9F93 - bne LA085 - A2D_CALL A2D_SET_BOX, query_screen_params - rts - -LA097: A2D_CALL A2D_HIDE_CURSOR, DESKTOP_DIRECT ; These params should be ignored - bogus? - A2D_CALL A2D_SET_FILL_MODE, const4a - bit L9F92 - bpl LA0C2 - bit L9F92 - bvc LA0B6 - A2D_CALL A2D_SET_FILL_MODE, const0a - jmp LA0C2 - -LA0B6: A2D_CALL A2D_DRAW_BITMAP, draw_bitmap_params - A2D_CALL A2D_SET_FILL_MODE, const2a -LA0C2: A2D_CALL A2D_DRAW_BITMAP, draw_bitmap_params2 - ldy #$02 - lda ($06),y - and #$80 - beq LA0F2 - jsr LA14D - A2D_CALL A2D_SET_PATTERN, dark_pattern - bit L9F92 - bmi LA0E6 - A2D_CALL A2D_SET_FILL_MODE, const3a - beq LA0EC -LA0E6: A2D_CALL A2D_SET_FILL_MODE, const1a -LA0EC: A2D_CALL A2D_FILL_RECT, fill_rect_params6 -LA0F2: ldx #$03 -LA0F4: lda L9F94,x - sta set_pos_params2,x - dex - bpl LA0F4 - A2D_CALL A2D_SET_POS, set_pos_params2 - bit L9F92 - bmi LA10C - lda #$7F - bne LA10E -LA10C: lda #$00 -LA10E: sta set_text_mask_params - A2D_CALL A2D_SET_TEXT_MASK, set_text_mask_params - lda text_buffer+1 - and #$DF - sta text_buffer+1 - A2D_CALL A2D_DRAW_TEXT, draw_text_params - A2D_CALL A2D_SHOW_CURSOR - rts - -LA12C: ldx #$0F -LA12E: lda draw_bitmap_params2,x - sta draw_bitmap_params,x - dex - bpl LA12E - ldy L8E43 -LA13A: lda draw_bitmap_params::stride - clc - adc draw_bitmap_params::addr - sta draw_bitmap_params::addr - bcc LA149 - inc draw_bitmap_params::addr+1 -LA149: dey - bpl LA13A - rts - -LA14D: ldx #$00 -LA14F: lda draw_bitmap_params2::left,x - clc - adc draw_bitmap_params2::hoff,x - sta fill_rect_params6,x - lda draw_bitmap_params2::left+1,x - adc draw_bitmap_params2::hoff+1,x - sta fill_rect_params6::left+1,x - lda draw_bitmap_params2::left,x - clc - adc draw_bitmap_params2::width,x - sta fill_rect_params6::right,x - lda draw_bitmap_params2::left+1,x - adc draw_bitmap_params2::width+1,x - sta fill_rect_params6::right+1,x - inx - inx - cpx #$04 - bne LA14F - lda fill_rect_params6::bottom - sec - sbc #$01 - sta fill_rect_params6::bottom - bcs LA189 - dec fill_rect_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 - sta $09 - 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 a2d::glyph_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 -LA233: lda draw_text_params::length - sta measure_text_params::length - A2D_CALL A2D_MEASURE_TEXT, measure_text_params - ldy #$08 - lda measure_text_params::width - cmp ($08),y - bcs LA256 - inc draw_text_params::length - ldx draw_text_params::length - lda #$20 - 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 - inc measure_text_params::width - inc measure_text_params::width - lda L8E19 - clc - adc measure_text_params::width - 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: - -LA2A6: - 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 - DESKTOP_DIRECT_CALL $3, $A2A9 -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 -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 -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 -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 -LA39D: A2D_CALL A2D_QUERY_SCREEN, query_screen_params - A2D_CALL A2D_SET_STATE, query_screen_params - 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 - A2D_CALL A2D_SET_PATTERN, white_pattern2 - A2D_CALL $41, LA3B8 - lda LA3B8 - sta query_state_params - A2D_CALL A2D_QUERY_STATE, query_state_params - jsr LA4CC - jsr LA938 - jsr LA41C - jmp LA446 - -LA3F4: A2D_CALL A2D_QUERY_SCREEN, query_screen_params - jsr LA63F -LA3FD: jsr LA6A3 - jsr LA411 - lda L9F93 - bne LA3FD - A2D_CALL A2D_SET_BOX, query_screen_params - jmp LA446 - -LA411: lda #$00 - sta LA3B7 - A2D_CALL A2D_SET_PATTERN, 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 - A2D_CALL $15, L8E03 - rts - -LA446: jsr LA365 - ldx L8E95 - dex -LA44D: cpx #$FF - bne LA466 - bit LA3B7 - bpl LA462 - A2D_CALL A2D_QUERY_SCREEN, query_screen_params - A2D_CALL A2D_SET_STATE, set_state_params -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 - sta $09 - 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 -LA4AC: DESKTOP_DIRECT_CALL $D, $A3AE - beq LA4BA - - DESKTOP_DIRECT_CALL $3, $A3AE - -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 -LA4E4: lda set_state_params,y - sta LA567,y - iny - cpy #$04 - bne LA4E4 - ldy #$08 -LA4F1: lda set_state_params,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 - -.proc set_box_params2 -left: .word 0 -top: .word 0 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word 0 -height: .word 0 -.endproc - -LA63F: jsr LA18A - lda L8E07 - sta LA629 - sta set_box_params2::voff - sta set_box_params2::top - lda L8E08 - sta LA62A - sta set_box_params2::voff+1 - sta set_box_params2::top+1 - lda L8E19 - sta LA627 - sta set_box_params2::hoff - sta set_box_params2::left - lda L8E1A - sta LA628 - sta set_box_params2::hoff+1 - sta set_box_params2::left+1 - ldx #$03 -LA674: lda L8E15,x - sta LA62B,x - sta set_box_params2::width,x - dex - bpl LA674 - lda LA62B - cmp #$2F - lda LA62C - sbc #$02 - bmi LA69C - lda #$2E - sta LA62B - sta set_box_params2::width - lda #$02 - sta LA62C - sta set_box_params2::width+1 -LA69C: A2D_CALL A2D_SET_BOX, set_box_params2 - rts - -LA6A3: lda #$00 - jmp LA6C7 - -.proc query_target_params -queryx: .word 0 -queryy: .word 0 -element:.byte 0 -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 - lda set_box_params2::width - clc - adc #$01 - sta set_box_params2::hoff - sta set_box_params2::left - lda set_box_params2::width+1 - adc #$00 - sta set_box_params2::hoff+1 - sta set_box_params2::left+1 - ldx #$05 -LA6E5: lda LA629,x - sta set_box_params2::voff,x - dex - bpl LA6E5 - lda set_box_params2::voff - sta set_box_params2::top - lda set_box_params2::voff+1 - sta set_box_params2::top+1 -LA6FA: lda set_box_params2::hoff - sta LA6B3 - sta LA6BF - lda set_box_params2::hoff+1 - sta LA6B4 - sta LA6C0 - lda set_box_params2::voff - sta LA6B5 - sta LA6B9 - lda set_box_params2::voff+1 - sta LA6B6 - sta LA6BA - lda set_box_params2::width - sta LA6B7 - sta LA6BB - lda set_box_params2::width+1 - sta LA6B8 - sta LA6BC - lda set_box_params2::height - sta LA6BD - sta LA6C1 - lda set_box_params2::height+1 - sta LA6BE - sta LA6C2 - lda #$00 - sta LA6B0 -LA747: lda LA6B0 - cmp #$04 - bne LA775 - lda #$00 - sta LA6B0 -LA753: A2D_CALL A2D_SET_BOX, set_box_params2 - lda set_box_params2::width+1 - cmp LA62C - bne LA76F - lda set_box_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 - sta query_target_params,y - iny - inx - cpy #$04 - bne LA77D - inc LA6B0 - A2D_CALL A2D_QUERY_TARGET, query_target_params - lda query_target_params::element - beq LA747 - lda query_target_params::id - sta query_state_params - A2D_CALL A2D_QUERY_STATE, query_state_params - jsr LA365 - A2D_CALL A2D_QUERY_WINDOW, query_target_params::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 - lda set_state_params::left - sec - sbc #2 - sta set_state_params::left - lda set_state_params::left+1 - sbc #0 - sta set_state_params::left+1 - lda set_state_params::hoff - sec - sbc #2 - sta set_state_params::hoff - lda set_state_params::hoff+1 - sbc #0 - sta set_state_params::hoff+1 - bit LA6B2 - bmi LA820 - lda set_state_params::top - sec - sbc #$0E - sta set_state_params::top - bcs LA812 - dec set_state_params::top+1 -LA812: lda set_state_params::voff - sec - sbc #$0E - sta set_state_params::voff - bcs LA820 - dec set_state_params::voff+1 -LA820: bit LA6B1 - bpl LA833 - lda set_state_params::height - clc - adc #$0C - sta set_state_params::height - bcc LA833 - inc set_state_params::height+1 -LA833: bit LA6B1 - bvc LA846 - lda set_state_params::width - clc - adc #$14 - sta set_state_params::width - bcc LA846 - inc set_state_params::width+1 -LA846: jsr LA382 - lda set_state_params::width - sec - sbc set_state_params::hoff - sta LA6C3 - lda set_state_params::width+1 - sbc set_state_params::hoff+1 - sta LA6C4 - lda set_state_params::height - sec - sbc set_state_params::voff - sta LA6C5 - lda set_state_params::height+1 - sbc set_state_params::voff+1 - sta LA6C6 - lda LA6C3 - clc - adc set_state_params::left - sta LA6C3 - lda set_state_params::left+1 - adc LA6C4 - sta LA6C4 - lda LA6C5 - clc - adc set_state_params::top - sta LA6C5 - lda LA6C6 - adc set_state_params::top+1 - sta LA6C6 - lda set_box_params2::width - cmp LA6C3 - lda set_box_params2::width+1 - sbc LA6C4 - bmi LA8B7 - lda LA6C3 - clc - adc #$01 - sta set_box_params2::width - lda LA6C4 - adc #$00 - sta set_box_params2::width+1 - jmp LA8D4 - -LA8B7: lda set_state_params::left - cmp set_box_params2::hoff - lda set_state_params::left+1 - sbc set_box_params2::hoff+1 - bmi LA8D4 - lda set_state_params::left - sta set_box_params2::width - lda set_state_params::left+1 - sta set_box_params2::width+1 - jmp LA6FA - -LA8D4: lda set_state_params::top - cmp set_box_params2::voff - lda set_state_params::top+1 - sbc set_box_params2::voff+1 - bmi LA8F6 - lda set_state_params::top - sta set_box_params2::height - lda set_state_params::top+1 - sta set_box_params2::height+1 - lda #$01 - sta L9F93 - jmp LA6FA - -LA8F6: lda LA6C5 - cmp set_box_params2::height - lda LA6C6 - sbc set_box_params2::height+1 - bpl LA923 - lda LA6C5 - clc - adc #$02 - sta set_box_params2::voff - sta set_box_params2::top - lda LA6C6 - adc #$00 - sta set_box_params2::voff+1 - sta set_box_params2::top+1 - lda #$01 - sta L9F93 - jmp LA6FA - -LA923: lda set_box_params2::width - sta set_box_params2::hoff - sta set_box_params2::left - lda set_box_params2::width+1 - sta set_box_params2::hoff+1 - sta set_box_params2::left+1 - jmp LA753 - -LA938: lda set_state_params::top - clc - adc #$0F - sta set_state_params::top - lda set_state_params::top+1 - adc #0 - sta set_state_params::top+1 - lda set_state_params::voff - clc - adc #$0F - sta set_state_params::voff - lda set_state_params::voff+1 - adc #0 - sta set_state_params::voff+1 - A2D_CALL A2D_SET_STATE, set_state_params - 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 -LA980: .addr LA9AC ; address - .word 4 ; stride - .word 0 ; left - .word 1 ; top - .word 26 ; width - .word 15 ; height - -LA9AC: - .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 -LA9CC: .addr LA9D8 ; address - .word 6 ; stride - .word 1 ; left (???) - .word 0 ; top - .word 38 ; width - .word 11 ; height -LA9D8: - .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 -LAA20: .addr LAA2C ; address - .word 3 ; stride - .word 0 ; left - .word 0 ; top - .word 20 ; width - .word 11 ; height -LAA2C: - .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 -LAA50: .addr LAA5C ; address - .word 8 ; stride - .word 1 ; left - .word 0 ; top - .word 51 ; width - .word 9 ; height -LAA5C: - .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 -LAAAC: .addr LAAB8 ; address - .word 5 ; stride - .word 7 ; left - .word 1 ; top - .word 27 ; width - .word 18 ; height -LAAB8: - .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 A2D_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 ..." - -LAC44: .word 6 - .addr 1, label_apple, apple_menu, 0,0,0 - .addr 2, label_file, file_menu, 0,0,0 - .addr 4, label_view, view_menu, 0,0,0 - .addr 5, label_special, special_menu, 0,0,0 - .addr 8, label_startup, startup_menu, 0,0,0 - .addr 3, label_selector, selector_menu, 0,0,0 - -.macro DEFINE_MENU count - .word count, 0, 0 -.endmacro -.macro DEFINE_MENU_ITEM saddr, shortcut1, shortcut2 - .if .paramcount > 1 - .word 1 - .byte shortcut1 - .byte shortcut2 - .else - .word 0 - .byte 0 - .byte 0 - .endif - .addr saddr -.endmacro -.macro DEFINE_MENU_SEPARATOR - .addr $0040, $0013, $0000 -.endmacro - -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 - - .res 168, 0 - - .byte $04 - .byte $00,$02,$00,$8C,$01,$62,$00,$05 - .byte $00,$03,$00,$8B,$01,$61,$00,$28 - .byte $00,$51,$00,$8C,$00,$5C,$00,$C1 - .byte $00,$1E,$00,$25,$01,$29,$00,$04 - .byte $01,$51,$00,$68,$01,$5C,$00,$C8 - .byte $00,$51,$00,$F0,$00,$5C,$00,$04 - .byte $01,$51,$00,$2C,$01,$5C,$00,$40 - .byte $01,$51,$00,$68,$01,$5C,$00 - - PASCAL_STRING {"OK ",A2D_GLYPH_RETURN} - - .byte $09 - .byte $01,$5B,$00,$2D,$00,$5B,$00,$CD - .byte $00,$5B,$00,$09,$01,$5B,$00,$45 - .byte $01,$5B,$00,$1C,$00,$70,$00,$1C - .byte $00,$87,$00,$00,$7F,$27,$00,$19 - .byte $00,$68,$01,$50,$00,$28,$00,$3C - .byte $00,$68,$01,$50,$00,$41,$00,$2B - .byte $00,$41,$00,$33,$00,$41,$00,$23 - .byte $00,$8A,$01,$2A,$00,$41,$00,$2B - .byte $00,$8A,$01,$32,$00 - -LAE96: PASCAL_STRING "Cancel Esc" -LAEA8: PASCAL_STRING " Yes" -LAEAD: PASCAL_STRING " No" -LAEB1: PASCAL_STRING " All" -LAEB6: PASCAL_STRING "Source filename:" -LAEC7: PASCAL_STRING "Destination filename:" - - .byte $04,$00,$02,$00 - .byte $8C,$01,$6C,$00,$05,$00,$03,$00 - .byte $8B,$01,$6B,$00 - -LAEED: PASCAL_STRING "Apple II DeskTop" -LAEFE: PASCAL_STRING "Copyright Apple Computer Inc., 1986" -LAF22: PASCAL_STRING "Copyright Version Soft, 1985 - 1986" -LAF46: PASCAL_STRING "All Rights Reserved" -LAF5A: PASCAL_STRING "Authors: Stephane Cavril, Bernard Gallet, Henri Lamiraux" -LAF93: PASCAL_STRING "Richard Danais and Luc Barthelet" -LAFB4: PASCAL_STRING "With thanks to: A. Gerard, J. Gerber, P. Pahl, J. Bernard" -LAFEE: PASCAL_STRING "November 26, 1986" -LB000: PASCAL_STRING "Version 1.1" - -LB00C: PASCAL_STRING "Copy ..." -LB015: PASCAL_STRING "Now Copying " -LB022: PASCAL_STRING "from:" -LB028: PASCAL_STRING "to :" -LB02D: PASCAL_STRING "Files remaining to copy: " -LB047: PASCAL_STRING "That file already exists. Do you want to write over it ?" -LB080: PASCAL_STRING "This file is too large to copy, click OK to continue." - - .byte $6E,$00,$23 - .byte $00,$AA,$00,$3B,$00 - -LB0BE: PASCAL_STRING "Delete ..." -LB0C9: PASCAL_STRING "Click OK to delete:" -LB0DD: PASCAL_STRING "Clicking OK will immediately empty the trash of:" -LB10E: PASCAL_STRING "File:" -LB114: PASCAL_STRING "Files remaining to be deleted:" -LB133: PASCAL_STRING "This file is locked, do you want to delete it anyway ?" - - .byte $91,$00,$3B,$00,$C8,$00,$3B,$00,$2C,$01,$3B,$00 - -LB176: PASCAL_STRING "New Folder ..." -LB185: PASCAL_STRING "in:" -LB189: PASCAL_STRING "Enter the folder name:" -LB1A0: PASCAL_STRING "Rename an Icon ..." -LB1B3: PASCAL_STRING "Rename: " -LB1BC: PASCAL_STRING "New name:" -LB1C6: PASCAL_STRING "Get Info ..." -LB1D3: PASCAL_STRING "Name" -LB1D8: PASCAL_STRING "Locked" -LB1DF: PASCAL_STRING "Size" -LB1E4: PASCAL_STRING "Creation date" -LB1F2: PASCAL_STRING "Last modification" -LB204: PASCAL_STRING "Type" -LB209: PASCAL_STRING "Write protected" -LB219: PASCAL_STRING "Blocks free/size" -LB22A: PASCAL_STRING ": " - - .byte $A0,$00,$3B,$00 - .byte $91,$00,$3B,$00,$C8,$00,$3B,$00 - .byte $B9,$00,$3B,$00,$CD,$00,$3B,$00 - .byte $C3,$00,$3B,$00 - -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." -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." -LB3C0: PASCAL_STRING "Unlock ..." -LB3CB: PASCAL_STRING "Click OK to unlock " -LB3DF: PASCAL_STRING "Files remaining to be unlocked: " -LB400: PASCAL_STRING "Lock ..." -LB409: PASCAL_STRING "Click OK to lock " -LB41B: PASCAL_STRING "Files remaining to be locked: " -LB43A: PASCAL_STRING "Get Size ..." -LB447: PASCAL_STRING "Number of files" -LB457: PASCAL_STRING "Blocks used on disk" - - .byte $6E,$00,$23,$00,$6E,$00,$2B,$00 - -LB473: PASCAL_STRING "DownLoad ..." -LB480: PASCAL_STRING "The RAMCard is full. The copy was not completed." -LB4B1: PASCAL_STRING " " -LB4B3: PASCAL_STRING "Warning !" -LB4BD: PASCAL_STRING "Please insert the system disk." -LB4DC: PASCAL_STRING "The Selector list is full. You must delete an entry" -LB50C: PASCAL_STRING "before you can add new entries." -LB530: PASCAL_STRING "A window must be closed before opening this new catalog." - -LB569: PASCAL_STRING "There are too many windows open on the desktop !" -LB59A: PASCAL_STRING "Do you want to save the new Selector list" -LB5C4: PASCAL_STRING "on the system disk ?" - - - .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 - -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 - .word $14 ; left - .word $8 ; top - .addr alert_bitmap ; addr - .word 7 ; stride - .word 0 ; left - .word 0 ; top - .word $24 ; width - .word $17 ; height -.endproc - -alert_rect: - .word $41, $57, $1E5, $8E -alert_inner_frame_rect1: - .word $4, $2, $1A0, $35 -alert_inner_frame_rect2: - .word $5, $3, $19F, $34 - -LB6D3: .byte $41 -LB6D4: .byte $00 -LB6D5: .byte $57 -LB6D6: .byte $00,$00,$20,$80,$00,$00,$00,$00 - .byte $00 -LB6DF: .byte $A4 -LB6E0: .byte $01 -LB6E1: .byte $37,$00 - -ok_label: - PASCAL_STRING {"OK ",A2D_GLYPH_RETURN} - -try_again_rect: - .word $14,$25,$78,$30 -try_again_pos: - .word $0019,$002F - -cancel_rect: - .word $12C,$25,$190,$30 -cancel_pos: .word $0131,$002F - .word $00BE,$0010 -LB70F: .word $004B,$001D - -alert_action: .byte $00 -LB714: .byte $00 -LB715: .byte $00 - -try_again_label: - PASCAL_STRING "Try Again A" -cancel_label: - PASCAL_STRING "Cancel Esc" - -LB735: PASCAL_STRING "System Error" -LB742: PASCAL_STRING "I/O error" -LB74C: PASCAL_STRING "No device connected" -LB760: PASCAL_STRING "The disk is write protected." -LB77D: PASCAL_STRING "The syntax of the pathname is invalid." -LB7A4: PASCAL_STRING "Part of the pathname doesn't exist." -LB7C8: PASCAL_STRING "The volume cannot be found." -LB7E4: PASCAL_STRING "The file cannot be found." -LB7FE: PASCAL_STRING "That name already exists. Please use another name." -LB831: PASCAL_STRING "The disk is full." -LB843: PASCAL_STRING "The volume directory cannot hold more than 51 files." -LB878: PASCAL_STRING "The file is locked." -LB88C: PASCAL_STRING "This is not a ProDOS disk." -LB8A7: PASCAL_STRING "There is another volume with that name on the desktop." -LB8DE: PASCAL_STRING "There are 2 volumes with the same name." -LB906: PASCAL_STRING "This file cannot be run." -LB91F: PASCAL_STRING "That name is too long." -LB936: PASCAL_STRING "Please insert source disk" -LB950: PASCAL_STRING "Please insert destination disk" -LB96F: PASCAL_STRING "BASIC.SYSTEM not found" - - ;; number of alert messages -alert_count: - .byte $14 - - ;; message number-to-index table - ;; (look up by scan to determine index) -alert_table: - .byte $00,$27,$28,$2B,$40,$44,$45,$46 - .byte $47,$48,$49,$4E,$52,$57,$F9,$FA - .byte $FB,$FC,$FD,$FE - - ;; alert index to string address -prompt_table: - .addr LB735,LB742,LB74C,LB760,LB77D,LB7A4,LB7C8,LB7E4 - .addr LB7FE,LB831,LB843,LB878,LB88C,LB8A7,LB8DE,LB906 - .addr LB91F,LB936,LB950,LB96F - - ;; 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 - - ;; Show alert; prompt number in X (???), A = ??? -.proc show_alert_dialog - pha - txa - pha - A2D_RELAY2_CALL A2D_HIDE_CURSOR - A2D_RELAY2_CALL A2D_SET_CURSOR, pointer_cursor - A2D_RELAY2_CALL A2D_SHOW_CURSOR - sta ALTZPOFF - sta ROMIN2 - jsr $FBDD - sta ALTZPON - lda LCBANK1 - lda LCBANK1 - ldx #$03 - lda #$00 -LBA0B: sta $D239,x - sta $D241,x - dex - bpl LBA0B - lda #$26 - sta $D245 - lda #$02 - sta $D246 - lda #$B9 - sta $D247 - lda #$00 - sta $D248 - A2D_RELAY2_CALL A2D_SET_STATE, $D239 - lda LB6D3 - ldx LB6D4 - jsr LBF8B - sty LBFCA - sta LBFCD - lda LB6D3 - clc - adc LB6DF - pha - lda LB6D4 - adc LB6E0 - tax - pla - jsr LBF8B - sty LBFCC - sta LBFCE - lda LB6D5 - sta LBFC9 - clc - adc LB6E1 - sta LBFCB - A2D_RELAY2_CALL A2D_HIDE_CURSOR - jsr LBE08 - A2D_RELAY2_CALL A2D_SHOW_CURSOR - A2D_RELAY2_CALL A2D_SET_FILL_MODE, const0 - A2D_RELAY2_CALL A2D_FILL_RECT, alert_rect ; alert background - A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 ; ensures corners are inverted - A2D_RELAY2_CALL A2D_DRAW_RECT, alert_rect ; alert outline - A2D_RELAY2_CALL A2D_SET_BOX, $B6D3 - A2D_RELAY2_CALL A2D_DRAW_RECT, alert_inner_frame_rect1 ; inner 2x border - A2D_RELAY2_CALL A2D_DRAW_RECT, alert_inner_frame_rect2 - A2D_RELAY2_CALL A2D_SET_FILL_MODE, const0 ; restores normal mode - A2D_RELAY2_CALL A2D_HIDE_CURSOR - A2D_RELAY2_CALL A2D_DRAW_BITMAP, alert_bitmap_params - A2D_RELAY2_CALL A2D_SHOW_CURSOR - 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 -LBB14: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - bit alert_action - bpl LBB5C - A2D_RELAY2_CALL A2D_DRAW_RECT, cancel_rect - A2D_RELAY2_CALL A2D_SET_POS, cancel_pos - DRAW_PASCAL_STRING cancel_label - bit alert_action - bvs LBB5C - A2D_RELAY2_CALL A2D_DRAW_RECT, try_again_rect - A2D_RELAY2_CALL A2D_SET_POS, try_again_pos - DRAW_PASCAL_STRING try_again_label - jmp LBB75 -.endproc - -LBB5C: A2D_RELAY2_CALL A2D_DRAW_RECT, try_again_rect - A2D_RELAY2_CALL A2D_SET_POS, try_again_pos - DRAW_PASCAL_STRING ok_label -LBB75: A2D_RELAY2_CALL A2D_SET_POS, $B70F - lda LB714 - ldx LB715 - jsr draw_pascal_string -LBB87: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params - lda alert_input_params - cmp #$01 - bne LBB9A - jmp LBC0C - -LBB9A: cmp #$03 - bne LBB87 - lda alert_input_params+1 - and #$7F - bit alert_action - bpl LBBEE - cmp #$1B - bne LBBC3 - A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect - lda #$01 - jmp LBC55 - -LBBC3: bit alert_action - bvs LBBEE - cmp #$61 - bne LBBE3 -LBBCC: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect - lda #$00 - jmp LBC55 - -LBBE3: cmp #$41 - beq LBBCC - cmp #$0D - beq LBBCC - jmp LBB87 - -LBBEE: cmp #$0D - bne LBC09 - A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect - lda #$02 - jmp LBC55 - -LBC09: jmp LBB87 - -LBC0C: jsr LBDE1 - A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 - bit alert_action - bpl LBC42 - A2D_RELAY2_CALL A2D_TEST_BOX, cancel_rect - cmp #$80 - bne LBC2D - jmp LBCE9 - -LBC2D: bit alert_action - bvs LBC42 - A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect - cmp #$80 - bne LBC52 - jmp LBC6D - -LBC42: A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect - cmp #$80 - bne LBC52 - jmp LBD65 - -LBC52: jmp LBB87 - -LBC55: pha - A2D_RELAY2_CALL A2D_HIDE_CURSOR - jsr LBE5D - A2D_RELAY2_CALL A2D_SHOW_CURSOR - pla - rts - -LBC6D: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect - lda #$00 - sta LBCE8 -LBC84: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params - lda alert_input_params - cmp #$02 - beq LBCDB - jsr LBDE1 - A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 - A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect - cmp #$80 - beq LBCB5 - lda LBCE8 - beq LBCBD - jmp LBC84 - -LBCB5: lda LBCE8 - bne LBCBD - jmp LBC84 - -LBCBD: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, 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 -LBCE9: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect - lda #$00 - sta LBD64 -LBD00: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params - lda alert_input_params - cmp #$02 - beq LBD57 - jsr LBDE1 - A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 - A2D_RELAY2_CALL A2D_TEST_BOX, cancel_rect - cmp #$80 - beq LBD31 - lda LBD64 - beq LBD39 - jmp LBD00 - -LBD31: lda LBD64 - bne LBD39 - jmp LBD00 - -LBD39: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, 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 - A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect -LBD7C: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params - lda alert_input_params - cmp #$02 - beq LBDD3 - jsr LBDE1 - A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 - A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect - cmp #$80 - beq LBDAD - lda LBDE0 - beq LBDB5 - jmp LBD7C - -LBDAD: lda LBDE0 - bne LBDB5 - jmp LBD7C - -LBDB5: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 - A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect - lda LBDE0 - clc - adc #$80 - sta LBDE0 - jmp LBD7C - -LBDD3: lda LBDE0 - beq LBDDB - jmp LBB87 - -LBDDB: lda #$02 - jmp LBC55 - -LBDE0: .byte 0 -LBDE1: lda alert_input_params+1 - sec - sbc LB6D3 - sta alert_input_params+1 - lda alert_input_params+2 - sbc LB6D4 - sta alert_input_params+2 - lda $D20B - sec - sbc LB6D5 - sta $D20B - lda $D20C - sbc LB6D6 - sta $D20C - 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 LOWSCR - bcs LBE34 - sta HISCR -LBE34: lda ($06),y -LBE37 := * + 1 -LBE38 := * + 2 - sta $1234 - 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 - sta LBEBD - 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 LOWSCR - bcs LBEBB - sta HISCR -LBEBB: .byte $AD -LBEBC: .byte 0 -LBEBD: php - 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 - inc LBEBD -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 -call: A2D_RELAY2_CALL A2D_DRAW_TEXT, ptr -end: rts -.endproc - - ;; A2D call in Y, params addr (X,A) -.proc A2D_RELAY2 - sty call - sta addr - stx addr+1 - jsr A2D -call: .byte 0 -addr: .addr 0 - rts -.endproc - - .byte 0 - .byte 0 - .byte 0 - .byte 0 - - .assert * = $C000, error, "Segment expected to fill through $C000" - -;;; ================================================== -;;; -;;; $C000 - $CFFF is I/O Space -;;; -;;; ================================================== - - .org $D000 - -;;; Various routines callable from MAIN - - ;; A2D call from main>aux, call in Y, params at (X,A) -.proc A2D_RELAY_IMPL - .assert * = A2D_RELAY, error, "Entry point mismatch" - sty addr-1 - sta addr - stx addr+1 - sta RAMRDON - sta RAMWRTON - A2D_CALL 0, 0, addr - sta RAMRDOFF - sta RAMWRTOFF - rts -.endproc - - ;; SET_POS with params at (X,A) followed by DRAW_TEXT call -.proc SETPOS_RELAY_IMPL - .assert * = SETPOS_RELAY, error, "Entry point mismatch" - sta addr - stx addr+1 - sta RAMRDON - sta RAMWRTON - A2D_CALL A2D_SET_POS, 0, addr - A2D_RELAY_CALL A2D_DRAW_TEXT, text_buffer2 - tay - sta RAMRDOFF - sta RAMWRTOFF - tya - rts -.endproc - - ;; 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 - - ;; Find first 0 in AUX $1F80 ... $1F7F; if present, - ;; mark it 1 and return index+1 in A -.proc DESKTOP_FIND_SPACE_IMPL - .assert * = DESKTOP_FIND_SPACE, error, "Entry point mismatch" - 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 - - ;; Zero the AUX $1F80 table entry in A -.proc DESKTOP_FREE_SPACE_IMPL - .assert * = DESKTOP_FREE_SPACE, error, "Entry point mismatch" - tay - sta RAMRDON - sta RAMWRTON - dey - lda #0 - sta $1F80,y - sta RAMRDOFF - sta RAMWRTOFF - rts -.endproc - - ;; Copy data to/from buffers (see bufnum / buf3 / table1/2) ??? -.proc DESKTOP_COPY_BUF_IMPL - ptr := $6 - - .assert * = DESKTOP_COPY_FROM_BUF, error, "Entry point mismatch" - lda #$80 - bne :+ ; always - - .assert * = DESKTOP_COPY_TO_BUF, error, "Entry point mismatch" - lda #$00 - -: sta flag - jsr DESKTOP_MAIN_PUSH_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 - jsr DESKTOP_MAIN_POP_ADDRS - rts - -flag: .byte 0 - rts ; ??? -.endproc - - ;; Assign active state to DESKTOP_WINID window -.proc DESKTOP_ASSIGN_STATE_IMPL - src := $6 - dst := $8 - - sta RAMRDON - sta RAMWRTON - A2D_CALL A2D_GET_STATE, src ; grab window state - - lda DESKTOP_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 - - ;; From MAIN, load AUX (X,A) into A -.proc DESKTOP_AUXLOAD_IMPL - .assert * = DESKTOP_AUXLOAD, error, "Entry point mismatch" - stx op+2 - sta op+1 - sta RAMRDON - sta RAMWRTON -op: lda $1234 - sta RAMRDOFF - sta RAMWRTOFF - rts -.endproc - - ;; From MAIN, show alert with prompt #0 -.proc DESKTOP_SHOW_ALERT0_IMPL - .assert * = DESKTOP_SHOW_ALERT0, error, "Entry point mismatch" - ldx #$00 - ;; fall through -.endproc - - ;; From MAIN, show alert with prompt # in X -.proc DESKTOP_SHOW_ALERT_IMPL - .assert * = DESKTOP_SHOW_ALERT, error, "Entry point mismatch" - sta RAMRDON - sta RAMWRTON - jsr show_alert_indirection - sta RAMRDOFF - sta RAMWRTOFF - rts -.endproc - -;;; ============================================================ - - .res 154, 0 - -const0: .byte 0 -const1: .byte 1 -const2: .byte 2 -const3: .byte 3 -const4: .byte 4 -const5: .byte 5 -const6: .byte 6 -const7: .byte 7 - -alert_input_params: - .byte $00,$00,$00,$00,$00,$00 - - .byte $00,$00,$00,$00,$00 - .addr buffer -buffer: .byte $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,$20,$80,$00,$00 - .byte $00,$00,$00,$0A,$00,$0A,$00,$FF - .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF - .byte $00,$00,$00,$00,$00,$01,$01,$00 - .byte $00,$00,$88,$FF,$FF,$FF,$FF,$FF - .byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$FF - -LD293: - .byte px(%1010101) - .byte PX(%0101010) - .byte px(%1010101) - .byte PX(%0101010) - .byte px(%1010101) - .byte PX(%0101010) - .byte px(%1010101) - .byte PX(%0101010) - - .byte $FF,$06,$EA - .byte $00,$00,$00,$00,$88,$00,$08,$00 - .byte $13,$00,$00,$00,$00,$00,$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 -LD2DF: - .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 -LD311: - .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 - - .res 384, 0 - - .byte $00,$00 - -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) - -LD56D: - .word $28, $8 ; left, top - .addr alert_bitmap2 - .byte $07 ; stride - .byte $00 - .word 0, 0, $24, $17 ; hoff, voff, width, height - - ;; Looks like window param blocks starting here - -.proc winF -id: .byte $0F -flags: .byte A2D_CWF_NOTITLE -title: .addr 0 -hscroll:.byte A2D_CWS_NOSCROLL -vscroll:.byte A2D_CWS_NOSCROLL -hsmax: .byte 0 -hspos: .byte 0 -vsmax: .byte 0 -vspos: .byte 0 - .byte 0,0 ; ??? -w1: .word $96 -h1: .word $32 -w2: .word $1F4 -h2: .word $8C -left: .word $4B -top: .word $23 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word $190 -height: .word $64 -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -fill: .byte 0 -tmask: .byte A2D_DEFAULT_TMASK -font: .addr A2D_DEFAULT_FONT -next: .addr 0 -.endproc - -.proc win12 -id: .byte $12 -flags: .byte A2D_CWF_NOTITLE -title: .addr 0 -hscroll:.byte A2D_CWS_NOSCROLL -vscroll:.byte A2D_CWS_NOSCROLL -hsmax: .byte 0 -hspos: .byte 0 -vsmax: .byte 0 -vspos: .byte 0 - .byte 0,0 ; ??? -w1: .word $96 -h1: .word $32 -w2: .word $1F4 -h2: .word $8C -left: .word $19 -top: .word $14 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word $1F4 -height: .word $99 -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -mode: .byte 0 -tmask: .byte A2D_DEFAULT_TMASK -font: .addr A2D_DEFAULT_FONT -next: .addr 0 -.endproc - -.proc win15 -id: .byte $15 -flags: .byte A2D_CWF_NOTITLE -title: .addr 0 -hscroll:.byte A2D_CWS_NOSCROLL -vscroll:.byte A2D_CWS_SCROLL_NORMAL -hsmax: .byte 0 -hspos: .byte 0 -vsmax: .byte 3 -vspos: .byte 0 - .byte 0,0 ; ??? -w1: .word $64 -h1: .word $46 -w2: .word $64 -h2: .word $46 -left: .word $35 -top: .word $32 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word $7D -height: .word $46 -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -mode: .byte 0 -tmask: .byte A2D_DEFAULT_TMASK -font: .addr A2D_DEFAULT_FONT -next: .addr 0 -.endproc - -.proc win18 -id: .byte $18 -flags: .byte A2D_CWF_NOTITLE -title: .addr 0 -hscroll:.byte A2D_CWS_NOSCROLL -vscroll:.byte A2D_CWS_NOSCROLL -hsmax: .byte 0 -hspos: .byte 0 -vsmax: .byte 0 -vspos: .byte 0 - .byte 0,0 ; ??? -w1: .word $96 -h1: .word $32 -w2: .word $1F4 -h2: .word $8C -state: -left: .word $50 -top: .word $28 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word $190 -height: .word $6E -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -mode: .byte 0 -tmask: .byte A2D_DEFAULT_TMASK -font: .addr A2D_DEFAULT_FONT -next: .addr 0 -.endproc - -.proc win1B -id: .byte $1B -flags: .byte A2D_CWF_NOTITLE -title: .addr 0 -hscroll:.byte A2D_CWS_NOSCROLL -vscroll:.byte A2D_CWS_NOSCROLL -hsmax: .byte 0 -hspos: .byte 0 -vsmax: .byte 0 -vspos: .byte 0 - .byte 0,0 ; ??? -w1: .word $96 -h1: .word $32 -w2: .word $1F4 -h2: .word $8C -left: .word $69 -top: .word $19 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word $15E -height: .word $6E -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -mode: .byte 0 -tmask: .byte A2D_DEFAULT_TMASK -font: .addr A2D_DEFAULT_FONT -next: .addr 0 -.endproc - - ;; Coordinates for labels? - .byte $28,$00,$25,$00,$68,$01,$2F,$00,$2D,$00,$2E,$00,$28,$00,$3D,$00,$68,$01,$47,$00,$2D,$00,$46,$00,$00,$00,$12,$00,$28,$00,$12,$00,$28,$00,$23,$00,$28,$00,$00,$00 - - .word $4B, $23 ; left, top - .addr A2D_SCREEN_ADDR - .word A2D_SCREEN_STRIDE - .word 0, 0 ; width, height - - .byte $66,$01,$64,$00,$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 {A2D_GLYPH_OAPPLE,"1 Run list"} - PASCAL_STRING {A2D_GLYPH_OAPPLE,"2 Other Run list"} - PASCAL_STRING "Down load:" - PASCAL_STRING {A2D_GLYPH_OAPPLE,"3 at first boot"} - PASCAL_STRING {A2D_GLYPH_OAPPLE,"4 at first use"} - PASCAL_STRING {A2D_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 - .byte $1A,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$14,$00,$00,$00,$00 - .byte $01,$06,$00,$00,$00,$00,$00,$00 - .byte $01,$00 - - PASCAL_STRING " " - - PASCAL_STRING "Files" - - PASCAL_STRING " " - - .byte $00,$00,$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 ",A2D_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:" - - .res 40, 0 - - .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 896, 0 - - .byte $00 - - ;; Used by DESKTOP_COPY_*_BUF - .assert * = DESKTOP_BUFNUM, error, "Entry point mismatch" -bufnum: .byte $00 -buf3len:.byte 0 -buf3: .res 256, 0 - - ;; Buffer for desktop windows -win_table: - .addr 0,win1,win2,win3,win4,win5,win6,win7,win8 - - .addr $0000 - .repeat 8,i - .addr buf2+i*$41 - .endrepeat - - .byte $00,$00,$00,$00,$00 - - .res 144, 0 - - .byte $00,$00,$00,$00,$0D,$00,$00,$00 - - .res 440, 0 - - .byte $00,$00,$00,$00,$7F,$64,$00,$1C - .byte $00,$1E,$00,$32,$00,$1E,$00,$40 - .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,$04,$00,$00,$00,$04,$00,$00 - .byte $04,$00,$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" - -sd0: A2D_DEFSTRING "Slot drive ", sd0s -sd1: A2D_DEFSTRING "Slot drive ", sd1s -sd2: A2D_DEFSTRING "Slot drive ", sd2s -sd3: A2D_DEFSTRING "Slot drive ", sd3s -sd4: A2D_DEFSTRING "Slot drive ", sd4s -sd5: A2D_DEFSTRING "Slot drive ", sd5s -sd6: A2D_DEFSTRING "Slot drive ", sd6s -sd7: A2D_DEFSTRING "Slot drive ", sd7s -sd8: A2D_DEFSTRING "Slot drive ", sd8s -sd9: A2D_DEFSTRING "Slot drive ", sd9s -sd10: A2D_DEFSTRING "Slot drive ", sd10s -sd11: A2D_DEFSTRING "Slot drive ", sd11s -sd12: A2D_DEFSTRING "Slot drive ", sd12s -sd13: A2D_DEFSTRING "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 - - PASCAL_STRING "ProFile Slot x " - PASCAL_STRING "UniDisk 3.5 Sx,y " - PASCAL_STRING "RAMCard Slot x " - 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 - - .byte $01,$00,$01,$00,$9A,$E6,$8E,$E6 - .byte $00,$00,$00,$00,$00,$00,$01,$00 - .byte $01,$00,$B7,$E6,$8E,$E6,$00,$00 - .byte $00,$00,$00,$00,$01,$00,$00,$00 - .byte $00,$00,$00,$00,$00,$00,$B9,$E6 - - PASCAL_STRING "Apple II DeskTop Version 1.1" - - .byte $01,$20,$04 - .byte $52,$69,$65,$6E,$00,$00,$00,$5D - .byte $E7,$A9,$E7,$F5,$E7,$41,$E8,$8D - .byte $E8,$D9,$E8,$25,$E9,$71,$E9,$00 - .byte $00,$00,$00,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$70,$00,$00,$00,$8C - .byte $00,$00,$00,$E7,$00,$00,$00 - -.proc text_buffer2 - .addr data - .byte 0 -data: .res 55, 0 -.endproc - -.macro WIN_PARAMS_DEFN window_id, label, buflabel -.proc label -id: .byte window_id -flags: .byte A2D_CWF_ADDCLOSE | A2D_CWF_ADDRESIZE -title: .addr buflabel -hscroll:.byte A2D_CWS_SCROLL_NORMAL -vscroll:.byte A2D_CWS_SCROLL_NORMAL -hsmax: .byte 3 -hspos: .byte 0 -vsmax: .byte 3 -vspos: .byte 0 - .byte 0,0 ; ??? -w1: .word 170 -h1: .word 50 -w2: .word 545 -h2: .word 175 -left: .word 20 -top: .word 27 -addr: .addr A2D_SCREEN_ADDR -stride: .word A2D_SCREEN_STRIDE -hoff: .word 0 -voff: .word 0 -width: .word 440 -height: .word 120 -pattern:.res 8, $FF -mskand: .byte A2D_DEFAULT_MSKAND -mskor: .byte A2D_DEFAULT_MSKOR -xpos: .word 0 -ypos: .word 0 -hthick: .byte 1 -vthick: .byte 1 -mode: .byte 0 -tmask: .byte A2D_DEFAULT_TMASK -font: .addr A2D_DEFAULT_FONT -next: .addr 0 -.endproc -buflabel:.res 18, 0 -.endmacro - - WIN_PARAMS_DEFN 1, win1, win1buf - WIN_PARAMS_DEFN 2, win2, win2buf - WIN_PARAMS_DEFN 3, win3, win3buf - WIN_PARAMS_DEFN 4, win4, win4buf - WIN_PARAMS_DEFN 5, win5, win5buf - WIN_PARAMS_DEFN 6, win6, win6buf - WIN_PARAMS_DEFN 7, win7, win7buf - WIN_PARAMS_DEFN 8, win8, win8buf - -buf2: .res 560, 0 - - PASCAL_STRING " Items" - - .byte $08,$00,$0A,$00,$00,$00,$00,$00 - .byte $00,$00,$00,$00 - - PASCAL_STRING "K in disk" - PASCAL_STRING "K available" - PASCAL_STRING " " - - .byte $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 - - ;; 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 - - .assert * = DESKTOP_WINID, error, "Entry point mismatch" -desktop_winid: - .byte $00 - .res 64, 0 - .word 500, 160 - .res 150, 0 - - .assert * = $ED00, error, "Segment expected to fill through $ED00" - -;;; ================================================== -;;; -;;; $ED00 - $FAFF is data buffers -;;; -;;; ================================================== - - .org $FB00 - -LFB00: .addr type_table -LFB02: .addr type_icons -LFB04: .addr LFB11 -LFB06: .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 - - ;; ??? -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) - - .res 70, 0 -.endproc ; desktop - desktop_win18_state := desktop::win18::state +.endproc ; a2d diff --git a/desktop/asm.cfg b/desktop/asm.cfg index 8e5abef..9287012 100644 --- a/desktop/asm.cfg +++ b/desktop/asm.cfg @@ -1,19 +1,11 @@ # Configuration for assembler programs which don't need a special setup FEATURES { - STARTADDRESS: default = $0803; + STARTADDRESS: default = $4000; } MEMORY { - ZP: file = "", start = $0000, size = $00FF; - HEADER: file = %O, start = %S - 4, size = $0004; - MAIN: file = %O, define = yes, start = %S, size = $C000 - %S; - BSS: file = "", start = __MAIN_LAST__, size = $C000 - __MAIN_LAST__; + MAIN: file = %O, define = yes, start = %S, size = $20000; # 128k; custom loader handles details } SEGMENTS { - ZEROPAGE: load = ZP, type = zp, optional = yes; - EXEHDR: load = HEADER, type = ro, optional = yes; - CODE: load = MAIN, type = rw; - RODATA: load = MAIN, type = ro, optional = yes; - DATA: load = MAIN, type = rw, optional = yes; - BSS: load = BSS, type = bss, optional = yes, define = yes; + CODE: load = MAIN, type = rw; } diff --git a/desktop/s4_main1.s b/desktop/desktop.s similarity index 66% rename from desktop/s4_main1.s rename to desktop/desktop.s index 3199311..70a83d6 100644 --- a/desktop/s4_main1.s +++ b/desktop/desktop.s @@ -1,12 +1,5232 @@ - .setcpu "6502" + .setcpu "65C02" ; TODO: Reduce down to 6502 .include "apple2.inc" .include "../inc/apple2.inc" .include "../inc/auxmem.inc" .include "../inc/prodos.inc" + .include "../inc/mouse.inc" .include "../a2d.inc" .include "../desktop.inc" +;;; ================================================== +;;; DeskTop - the actual application +;;; ================================================== + +.proc desktop_aux + .org $8E00 + + ;; Entry point for "DESKTOP" + .assert * = DESKTOP, error, "DESKTOP entry point must be at $8E00" + jmp DESKTOP_DIRECT + +.macro A2D_RELAY2_CALL call, addr + ldy #call + .if .paramcount = 1 + lda #0 + ldx #0 + .else + lda #<(addr) + ldx #>(addr) + .endif + jsr A2D_RELAY2 +.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 + +.proc draw_bitmap_params2 +left: .word 0 +top: .word 0 +addr: .addr 0 +stride: .word 0 +hoff: .word 0 +voff: .word 0 +width: .word 0 +height: .word 0 +.endproc + +.proc draw_bitmap_params +left: .word 0 +top: .word 0 +addr: .addr 0 +stride: .word 0 +hoff: .word 0 +voff: .word 0 +.endproc + + .byte $00,$00 +L8E43: .byte $00,$00 + +.proc fill_rect_params6 +left: .word 0 +top: .word 0 +right: .word 0 +bottom: .word 0 +.endproc + +.proc measure_text_params +addr: .addr text_buffer +length: .byte 0 +width: .word 0 +.endproc +set_text_mask_params := measure_text_params::width + 1 ; re-used + +.proc draw_text_params +addr: .addr text_buffer +length: .byte 0 +.endproc + +text_buffer: + .res 19, 0 + +white_pattern2: + .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 + +.proc query_target_params2 +queryx: .word 0 +queryy: .word 0 +element:.byte 0 +id: .byte 0 +.endproc + +.proc query_screen_params +left: .word 0 +top: .word 0 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +L934D: +hoff: .word 0 +voff: .word 0 +width: .word 560-1 +height: .word 192-1 +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +mode: .byte $96 ; ??? +tmask: .byte 0 +font: .addr A2D_DEFAULT_FONT +.endproc + +.proc query_state_params +id: .byte 0 +addr: .addr set_state_params +.endproc + +.proc set_state_params +left: .word 0 +top: .word 0 +addr: .addr 0 +stride: .word 0 +hoff: .word 0 +voff: .word 0 +width: .word 0 +height: .word 0 +pattern:.res 8, 0 +mskand: .byte 0 +mskor: .byte 0 +xpos: .word 0 +ypos: .word 0 +hthick: .byte 0 +vthick: .byte 0 +mode: .byte 0 +tmask: .byte 0 +font: .addr 0 +.endproc + + .byte $00,$00,$00 + .byte $00,$FF,$80 + + ;; Used for FILL_MODE params +const0a:.byte 0 +const1a:.byte 1 +const2a:.byte 2 +const3a:.byte 3 +const4a:.byte 4 + .byte 5, 6, 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 + .addr LA2A6 ; $0C REDRAW_ICONS + .addr L9EFB ; $0D + .addr L958F ; $0E + +.macro DESKTOP_DIRECT_CALL op, addr, label + jsr DESKTOP_DIRECT + .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: + jsr $0000 + + tay + ldx #$03 +L9409: pla + sta $06,x + dex + cpx #$FF + bne L9409 + tya + rts + +call_params: .addr 0 + +.proc set_pos_params2 +xcoord: .word 0 +ycoord: .word 0 +.endproc + +;;; ================================================== + +;;; DESKTOP $01 IMPL + +L9419: + ldy #$00 + lda ($06),y + ldx L8E95 + beq L9430 + dex +L9423: .byte $DD + .byte $96 +L9425: stx $05F0 + dex + bpl L9423 + bmi L9430 + 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 + +;;; ================================================== + +;;; DESKTOP $02 IMPL + +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 + +;;; ================================================== + +;;; DESKTOP $03 IMPL + +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 + +;;; ================================================== + +;;; DESKTOP $04 IMPL + +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 + A2D_CALL A2D_SET_FILL_MODE, const0a + 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 + +;;; ================================================== + +;;; DESKTOP $0E IMPL + +L958F: + ldy #$00 + lda ($06),y + asl a + tax + lda L8F15,x + sta $06 + lda L8F15+1,x + sta $07 + jmp LA39D + +;;; ================================================== + +;;; DESKTOP $05 IMPL + +L95A2: + jmp L9625 + +L95A5: +L95A6 := * + 1 + .res 128, 0 + +L9625: lda L9454 + beq L9639 + lda L9017 + sta L95A5 + DESKTOP_DIRECT_CALL $B, $95A5 + 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 + sta $09 + 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 + DESKTOP_DIRECT_CALL $2, $95A5 + pla + tax + inx + txa + pha + jmp L967A + +;;; ================================================== + +;;; DESKTOP $06 IMPL + +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 + sta $09 + ldy #$02 + lda ($08),y + and #$0F + ldy #$00 + cmp ($06),y + bne L969D + DESKTOP_DIRECT_CALL $4, $9695 + jmp L969D +L96CF: lda #$00 + rts + +;;; ================================================== + +;;; DESKTOP $07 IMPL + +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 + sta $09 + 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 + +;;; ================================================== + +;;; DESKTOP $08 IMPL + +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 + +;;; ================================================== + +;;; DESKTOP $09 IMPL + +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 + sta set_pos_params2,y + dey + bpl L978B + lda $06 + sta $08 + lda $07 + sta $09 + ldy #$05 + lda ($06),y + sta L97F5 + A2D_CALL A2D_SET_POS, set_pos_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 + A2D_CALL $17, 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 + +;;; ================================================== + +;;; DESKTOP $0A IMPL + +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 +L9845: A2D_CALL $2C, L933E + lda L933E + cmp #$04 + beq L9857 +L9852: lda #$02 + jmp L9C65 + +L9857: lda query_target_params2::queryx + sec + sbc L9C8E + sta L982C + lda query_target_params2::queryx+1 + sbc L9C8F + sta L982D + lda query_target_params2::queryy + sec + sbc L9C90 + sta L982E + lda query_target_params2::queryy+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+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 + A2D_CALL A2D_QUERY_SCREEN, query_screen_params + ldx #$07 +L98E3: lda query_screen_params::L934D,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 + DESKTOP_DIRECT_CALL $D, $9834 + beq L9954 + jsr LA18A + lda L9C74 + cmp L9016 + beq L9936 + jsr LA365 + lda $08 + sec + sbc #$22 + sta $08 + bcs L992D + dec $09 +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 + inc $09 +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+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 + lda $09 + adc #$00 + sta $09 + jmp L9972 + +L99FC: A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 + A2D_CALL A2D_SET_FILL_MODE, const2a + A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer +L9A0E: A2D_CALL $2C, L933E + lda L933E + cmp #$04 + beq L9A1E + jmp L9BA5 + +L9A1E: ldx #$03 +L9A20: lda query_target_params2,x + cmp L9C92,x + bne L9A31 + dex + bpl L9A20 + jsr L9E14 + jmp L9A0E + +L9A31: ldx #$03 +L9A33: lda query_target_params2,x + sta L9C92,x + dex + bpl L9A33 + lda L9830 + beq L9A84 + lda L9831 + sta query_target_params2::id + DESKTOP_DIRECT_CALL $9, $933F + lda query_target_params2::element + cmp L9830 + beq L9A84 + A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 + A2D_CALL A2D_SET_FILL_MODE, const2a + A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer + DESKTOP_DIRECT_CALL $B, $9830 + A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 + A2D_CALL A2D_SET_FILL_MODE, const2a + A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer + lda #$00 + sta L9830 +L9A84: lda query_target_params2::queryx + sec + sbc L9C8E + sta L9C96 + lda query_target_params2::queryx+1 + sbc L9C8F + sta L9C97 + lda query_target_params2::queryy + sec + sbc L9C90 + sta L9C98 + lda query_target_params2::queryy+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 + .byte $50 +L9B4E: .byte $03 + jmp L9A0E + +L9B52: A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer + 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 + inc $09 +L9B99: jmp L9B60 + +L9B9C: A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer + jmp L9A0E + +L9BA5: A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer + lda L9830 + beq L9BB9 + DESKTOP_DIRECT_CALL $B, $9830 + jmp L9C63 + +L9BB9: A2D_CALL A2D_QUERY_TARGET, query_target_params2 + lda query_target_params2::id + cmp L9832 + beq L9BE1 + bit L9833 + bmi L9BDC + lda query_target_params2::id + bne L9BD4 +L9BD1: jmp L9852 + +L9BD4: ora #$80 + sta L9830 + jmp L9C63 + +L9BDC: lda L9832 + beq L9BD1 +L9BE1: jsr LA365 + A2D_CALL A2D_QUERY_SCREEN, query_screen_params + A2D_CALL A2D_SET_STATE, query_screen_params + 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 + A2D_CALL A2D_SET_FILL_MODE, const0a + jsr LA39D + pla + tax + jmp L9BF3 + +L9C18: jsr LA382 + ldx L9016 + dex + txa + pha + lda #drag_outline_buffer + sta $09 +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 + inc $09 +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 + +L9DFA: lda query_target_params2::queryx+1 + sta L9C8F + lda query_target_params2::queryx + sta L9C8E + rts + +L9E07: lda query_target_params2::queryy+1 + sta L9C91 + lda query_target_params2::queryy + sta L9C90 + rts + +L9E14: bit L9833 + bpl L9E1A + rts + +L9E1A: jsr LA365 +L9E1D: A2D_CALL A2D_QUERY_TARGET, query_target_params2 + lda query_target_params2::element + bne L9E2B + sta query_target_params2::id +L9E2B: DESKTOP_DIRECT_CALL $9, $933F + lda query_target_params2::element + 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 + A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 + A2D_CALL A2D_SET_FILL_MODE, const2a + A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer + DESKTOP_DIRECT_CALL $2, $9830 + A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 + A2D_CALL A2D_SET_FILL_MODE, const2a + A2D_CALL A2D_DRAW_POLYGONS, drag_outline_buffer +L9E97: A2D_CALL A2D_QUERY_SCREEN, query_screen_params + A2D_CALL A2D_SET_STATE, query_screen_params + A2D_CALL A2D_SET_PATTERN, checkerboard_pattern2 + A2D_CALL A2D_SET_FILL_MODE, const2a + jsr LA382 + rts + +L9EB3: .byte 0 +L9EB4: asl a + tay + lda L8F15+1,y + tax + lda L8F15,y + rts + +;;; ================================================== + +;;; DESKTOP $08 IMPL + +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 + DESKTOP_DIRECT_CALL $3, $9EC2 + lda #0 + rts + + rts + +;;; ================================================== + +;;; 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 + lda draw_bitmap_params2::addr + sta $08 + lda draw_bitmap_params2::addr+1 + sta $09 + ldy #$0B +L9FCF: lda ($08),y + sta draw_bitmap_params2::addr,y + dey + bpl L9FCF + bit L9F92 + bpl L9FDF + jsr LA12C +L9FDF: jsr LA382 + ldy #$09 +L9FE4: lda ($06),y + sta fill_rect_params6::bottom,y + iny + cpy #$1D + bne L9FE4 +L9FEE: lda draw_text_params::length + sta measure_text_params::length + A2D_CALL A2D_MEASURE_TEXT, measure_text_params + lda measure_text_params::width + cmp draw_bitmap_params2::width + bcs LA010 + inc draw_text_params::length + ldx draw_text_params::length + lda #$20 + sta text_buffer-1,x + jmp L9FEE + +LA010: lsr a + sta set_pos_params2::xcoord+1 + lda draw_bitmap_params2::width + lsr a + sta set_pos_params2 + lda set_pos_params2::xcoord+1 + sec + sbc set_pos_params2::xcoord + sta set_pos_params2::xcoord + lda draw_bitmap_params2::left + sec + sbc set_pos_params2::xcoord + sta set_pos_params2::xcoord + lda draw_bitmap_params2::left+1 + sbc #$00 + sta set_pos_params2::xcoord+1 + lda draw_bitmap_params2::top + clc + adc draw_bitmap_params2::height + sta set_pos_params2::ycoord + lda draw_bitmap_params2::top+1 + adc #$00 + sta set_pos_params2::ycoord+1 + lda set_pos_params2::ycoord + clc + adc #$01 + sta set_pos_params2::ycoord + lda set_pos_params2::ycoord+1 + adc #$00 + sta set_pos_params2::ycoord+1 + lda set_pos_params2::ycoord + clc + adc font_height + sta set_pos_params2::ycoord + lda set_pos_params2::ycoord+1 + adc #$00 + sta set_pos_params2::ycoord+1 + ldx #$03 +LA06E: lda set_pos_params2,x + sta L9F94,x + dex + bpl LA06E + bit L9F92 + bvc LA097 + A2D_CALL A2D_QUERY_SCREEN, query_screen_params + jsr LA63F +LA085: jsr LA6A3 + jsr LA097 + lda L9F93 + bne LA085 + A2D_CALL A2D_SET_BOX, query_screen_params + rts + +LA097: A2D_CALL A2D_HIDE_CURSOR, DESKTOP_DIRECT ; These params should be ignored - bogus? + A2D_CALL A2D_SET_FILL_MODE, const4a + bit L9F92 + bpl LA0C2 + bit L9F92 + bvc LA0B6 + A2D_CALL A2D_SET_FILL_MODE, const0a + jmp LA0C2 + +LA0B6: A2D_CALL A2D_DRAW_BITMAP, draw_bitmap_params + A2D_CALL A2D_SET_FILL_MODE, const2a +LA0C2: A2D_CALL A2D_DRAW_BITMAP, draw_bitmap_params2 + ldy #$02 + lda ($06),y + and #$80 + beq LA0F2 + jsr LA14D + A2D_CALL A2D_SET_PATTERN, dark_pattern + bit L9F92 + bmi LA0E6 + A2D_CALL A2D_SET_FILL_MODE, const3a + beq LA0EC +LA0E6: A2D_CALL A2D_SET_FILL_MODE, const1a +LA0EC: A2D_CALL A2D_FILL_RECT, fill_rect_params6 +LA0F2: ldx #$03 +LA0F4: lda L9F94,x + sta set_pos_params2,x + dex + bpl LA0F4 + A2D_CALL A2D_SET_POS, set_pos_params2 + bit L9F92 + bmi LA10C + lda #$7F + bne LA10E +LA10C: lda #$00 +LA10E: sta set_text_mask_params + A2D_CALL A2D_SET_TEXT_MASK, set_text_mask_params + lda text_buffer+1 + and #$DF + sta text_buffer+1 + A2D_CALL A2D_DRAW_TEXT, draw_text_params + A2D_CALL A2D_SHOW_CURSOR + rts + +LA12C: ldx #$0F +LA12E: lda draw_bitmap_params2,x + sta draw_bitmap_params,x + dex + bpl LA12E + ldy L8E43 +LA13A: lda draw_bitmap_params::stride + clc + adc draw_bitmap_params::addr + sta draw_bitmap_params::addr + bcc LA149 + inc draw_bitmap_params::addr+1 +LA149: dey + bpl LA13A + rts + +LA14D: ldx #$00 +LA14F: lda draw_bitmap_params2::left,x + clc + adc draw_bitmap_params2::hoff,x + sta fill_rect_params6,x + lda draw_bitmap_params2::left+1,x + adc draw_bitmap_params2::hoff+1,x + sta fill_rect_params6::left+1,x + lda draw_bitmap_params2::left,x + clc + adc draw_bitmap_params2::width,x + sta fill_rect_params6::right,x + lda draw_bitmap_params2::left+1,x + adc draw_bitmap_params2::width+1,x + sta fill_rect_params6::right+1,x + inx + inx + cpx #$04 + bne LA14F + lda fill_rect_params6::bottom + sec + sbc #$01 + sta fill_rect_params6::bottom + bcs LA189 + dec fill_rect_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 + sta $09 + 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 +LA233: lda draw_text_params::length + sta measure_text_params::length + A2D_CALL A2D_MEASURE_TEXT, measure_text_params + ldy #$08 + lda measure_text_params::width + cmp ($08),y + bcs LA256 + inc draw_text_params::length + ldx draw_text_params::length + lda #$20 + 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 + inc measure_text_params::width + inc measure_text_params::width + lda L8E19 + clc + adc measure_text_params::width + 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: + +LA2A6: + 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 + DESKTOP_DIRECT_CALL $3, $A2A9 +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 +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 +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 +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 +LA39D: A2D_CALL A2D_QUERY_SCREEN, query_screen_params + A2D_CALL A2D_SET_STATE, query_screen_params + 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 + A2D_CALL A2D_SET_PATTERN, white_pattern2 + A2D_CALL $41, LA3B8 + lda LA3B8 + sta query_state_params + A2D_CALL A2D_QUERY_STATE, query_state_params + jsr LA4CC + jsr LA938 + jsr LA41C + jmp LA446 + +LA3F4: A2D_CALL A2D_QUERY_SCREEN, query_screen_params + jsr LA63F +LA3FD: jsr LA6A3 + jsr LA411 + lda L9F93 + bne LA3FD + A2D_CALL A2D_SET_BOX, query_screen_params + jmp LA446 + +LA411: lda #$00 + sta LA3B7 + A2D_CALL A2D_SET_PATTERN, 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 + A2D_CALL $15, L8E03 + rts + +LA446: jsr LA365 + ldx L8E95 + dex +LA44D: cpx #$FF + bne LA466 + bit LA3B7 + bpl LA462 + A2D_CALL A2D_QUERY_SCREEN, query_screen_params + A2D_CALL A2D_SET_STATE, set_state_params +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 + sta $09 + 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 +LA4AC: DESKTOP_DIRECT_CALL $D, $A3AE + beq LA4BA + + DESKTOP_DIRECT_CALL $3, $A3AE + +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 +LA4E4: lda set_state_params,y + sta LA567,y + iny + cpy #$04 + bne LA4E4 + ldy #$08 +LA4F1: lda set_state_params,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 + +.proc set_box_params2 +left: .word 0 +top: .word 0 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word 0 +height: .word 0 +.endproc + +LA63F: jsr LA18A + lda L8E07 + sta LA629 + sta set_box_params2::voff + sta set_box_params2::top + lda L8E08 + sta LA62A + sta set_box_params2::voff+1 + sta set_box_params2::top+1 + lda L8E19 + sta LA627 + sta set_box_params2::hoff + sta set_box_params2::left + lda L8E1A + sta LA628 + sta set_box_params2::hoff+1 + sta set_box_params2::left+1 + ldx #$03 +LA674: lda L8E15,x + sta LA62B,x + sta set_box_params2::width,x + dex + bpl LA674 + lda LA62B + cmp #$2F + lda LA62C + sbc #$02 + bmi LA69C + lda #$2E + sta LA62B + sta set_box_params2::width + lda #$02 + sta LA62C + sta set_box_params2::width+1 +LA69C: A2D_CALL A2D_SET_BOX, set_box_params2 + rts + +LA6A3: lda #$00 + jmp LA6C7 + +.proc query_target_params +queryx: .word 0 +queryy: .word 0 +element:.byte 0 +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 + lda set_box_params2::width + clc + adc #$01 + sta set_box_params2::hoff + sta set_box_params2::left + lda set_box_params2::width+1 + adc #$00 + sta set_box_params2::hoff+1 + sta set_box_params2::left+1 + ldx #$05 +LA6E5: lda LA629,x + sta set_box_params2::voff,x + dex + bpl LA6E5 + lda set_box_params2::voff + sta set_box_params2::top + lda set_box_params2::voff+1 + sta set_box_params2::top+1 +LA6FA: lda set_box_params2::hoff + sta LA6B3 + sta LA6BF + lda set_box_params2::hoff+1 + sta LA6B4 + sta LA6C0 + lda set_box_params2::voff + sta LA6B5 + sta LA6B9 + lda set_box_params2::voff+1 + sta LA6B6 + sta LA6BA + lda set_box_params2::width + sta LA6B7 + sta LA6BB + lda set_box_params2::width+1 + sta LA6B8 + sta LA6BC + lda set_box_params2::height + sta LA6BD + sta LA6C1 + lda set_box_params2::height+1 + sta LA6BE + sta LA6C2 + lda #$00 + sta LA6B0 +LA747: lda LA6B0 + cmp #$04 + bne LA775 + lda #$00 + sta LA6B0 +LA753: A2D_CALL A2D_SET_BOX, set_box_params2 + lda set_box_params2::width+1 + cmp LA62C + bne LA76F + lda set_box_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 + sta query_target_params,y + iny + inx + cpy #$04 + bne LA77D + inc LA6B0 + A2D_CALL A2D_QUERY_TARGET, query_target_params + lda query_target_params::element + beq LA747 + lda query_target_params::id + sta query_state_params + A2D_CALL A2D_QUERY_STATE, query_state_params + jsr LA365 + A2D_CALL A2D_QUERY_WINDOW, query_target_params::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 + lda set_state_params::left + sec + sbc #2 + sta set_state_params::left + lda set_state_params::left+1 + sbc #0 + sta set_state_params::left+1 + lda set_state_params::hoff + sec + sbc #2 + sta set_state_params::hoff + lda set_state_params::hoff+1 + sbc #0 + sta set_state_params::hoff+1 + bit LA6B2 + bmi LA820 + lda set_state_params::top + sec + sbc #$0E + sta set_state_params::top + bcs LA812 + dec set_state_params::top+1 +LA812: lda set_state_params::voff + sec + sbc #$0E + sta set_state_params::voff + bcs LA820 + dec set_state_params::voff+1 +LA820: bit LA6B1 + bpl LA833 + lda set_state_params::height + clc + adc #$0C + sta set_state_params::height + bcc LA833 + inc set_state_params::height+1 +LA833: bit LA6B1 + bvc LA846 + lda set_state_params::width + clc + adc #$14 + sta set_state_params::width + bcc LA846 + inc set_state_params::width+1 +LA846: jsr LA382 + lda set_state_params::width + sec + sbc set_state_params::hoff + sta LA6C3 + lda set_state_params::width+1 + sbc set_state_params::hoff+1 + sta LA6C4 + lda set_state_params::height + sec + sbc set_state_params::voff + sta LA6C5 + lda set_state_params::height+1 + sbc set_state_params::voff+1 + sta LA6C6 + lda LA6C3 + clc + adc set_state_params::left + sta LA6C3 + lda set_state_params::left+1 + adc LA6C4 + sta LA6C4 + lda LA6C5 + clc + adc set_state_params::top + sta LA6C5 + lda LA6C6 + adc set_state_params::top+1 + sta LA6C6 + lda set_box_params2::width + cmp LA6C3 + lda set_box_params2::width+1 + sbc LA6C4 + bmi LA8B7 + lda LA6C3 + clc + adc #$01 + sta set_box_params2::width + lda LA6C4 + adc #$00 + sta set_box_params2::width+1 + jmp LA8D4 + +LA8B7: lda set_state_params::left + cmp set_box_params2::hoff + lda set_state_params::left+1 + sbc set_box_params2::hoff+1 + bmi LA8D4 + lda set_state_params::left + sta set_box_params2::width + lda set_state_params::left+1 + sta set_box_params2::width+1 + jmp LA6FA + +LA8D4: lda set_state_params::top + cmp set_box_params2::voff + lda set_state_params::top+1 + sbc set_box_params2::voff+1 + bmi LA8F6 + lda set_state_params::top + sta set_box_params2::height + lda set_state_params::top+1 + sta set_box_params2::height+1 + lda #$01 + sta L9F93 + jmp LA6FA + +LA8F6: lda LA6C5 + cmp set_box_params2::height + lda LA6C6 + sbc set_box_params2::height+1 + bpl LA923 + lda LA6C5 + clc + adc #$02 + sta set_box_params2::voff + sta set_box_params2::top + lda LA6C6 + adc #$00 + sta set_box_params2::voff+1 + sta set_box_params2::top+1 + lda #$01 + sta L9F93 + jmp LA6FA + +LA923: lda set_box_params2::width + sta set_box_params2::hoff + sta set_box_params2::left + lda set_box_params2::width+1 + sta set_box_params2::hoff+1 + sta set_box_params2::left+1 + jmp LA753 + +LA938: lda set_state_params::top + clc + adc #$0F + sta set_state_params::top + lda set_state_params::top+1 + adc #0 + sta set_state_params::top+1 + lda set_state_params::voff + clc + adc #$0F + sta set_state_params::voff + lda set_state_params::voff+1 + adc #0 + sta set_state_params::voff+1 + A2D_CALL A2D_SET_STATE, set_state_params + 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 +LA980: .addr LA9AC ; address + .word 4 ; stride + .word 0 ; left + .word 1 ; top + .word 26 ; width + .word 15 ; height + +LA9AC: + .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 +LA9CC: .addr LA9D8 ; address + .word 6 ; stride + .word 1 ; left (???) + .word 0 ; top + .word 38 ; width + .word 11 ; height +LA9D8: + .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 +LAA20: .addr LAA2C ; address + .word 3 ; stride + .word 0 ; left + .word 0 ; top + .word 20 ; width + .word 11 ; height +LAA2C: + .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 +LAA50: .addr LAA5C ; address + .word 8 ; stride + .word 1 ; left + .word 0 ; top + .word 51 ; width + .word 9 ; height +LAA5C: + .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 +LAAAC: .addr LAAB8 ; address + .word 5 ; stride + .word 7 ; left + .word 1 ; top + .word 27 ; width + .word 18 ; height +LAAB8: + .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 A2D_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 ..." + +LAC44: .word 6 + .addr 1, label_apple, apple_menu, 0,0,0 + .addr 2, label_file, file_menu, 0,0,0 + .addr 4, label_view, view_menu, 0,0,0 + .addr 5, label_special, special_menu, 0,0,0 + .addr 8, label_startup, startup_menu, 0,0,0 + .addr 3, label_selector, selector_menu, 0,0,0 + +.macro DEFINE_MENU count + .word count, 0, 0 +.endmacro +.macro DEFINE_MENU_ITEM saddr, shortcut1, shortcut2 + .if .paramcount > 1 + .word 1 + .byte shortcut1 + .byte shortcut2 + .else + .word 0 + .byte 0 + .byte 0 + .endif + .addr saddr +.endmacro +.macro DEFINE_MENU_SEPARATOR + .addr $0040, $0013, $0000 +.endmacro + +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 + + .res 168, 0 + + .byte $04 + .byte $00,$02,$00,$8C,$01,$62,$00,$05 + .byte $00,$03,$00,$8B,$01,$61,$00,$28 + .byte $00,$51,$00,$8C,$00,$5C,$00,$C1 + .byte $00,$1E,$00,$25,$01,$29,$00,$04 + .byte $01,$51,$00,$68,$01,$5C,$00,$C8 + .byte $00,$51,$00,$F0,$00,$5C,$00,$04 + .byte $01,$51,$00,$2C,$01,$5C,$00,$40 + .byte $01,$51,$00,$68,$01,$5C,$00 + + PASCAL_STRING {"OK ",A2D_GLYPH_RETURN} + + .byte $09 + .byte $01,$5B,$00,$2D,$00,$5B,$00,$CD + .byte $00,$5B,$00,$09,$01,$5B,$00,$45 + .byte $01,$5B,$00,$1C,$00,$70,$00,$1C + .byte $00,$87,$00,$00,$7F,$27,$00,$19 + .byte $00,$68,$01,$50,$00,$28,$00,$3C + .byte $00,$68,$01,$50,$00,$41,$00,$2B + .byte $00,$41,$00,$33,$00,$41,$00,$23 + .byte $00,$8A,$01,$2A,$00,$41,$00,$2B + .byte $00,$8A,$01,$32,$00 + +LAE96: PASCAL_STRING "Cancel Esc" +LAEA8: PASCAL_STRING " Yes" +LAEAD: PASCAL_STRING " No" +LAEB1: PASCAL_STRING " All" +LAEB6: PASCAL_STRING "Source filename:" +LAEC7: PASCAL_STRING "Destination filename:" + + .byte $04,$00,$02,$00 + .byte $8C,$01,$6C,$00,$05,$00,$03,$00 + .byte $8B,$01,$6B,$00 + +LAEED: PASCAL_STRING "Apple II DeskTop" +LAEFE: PASCAL_STRING "Copyright Apple Computer Inc., 1986" +LAF22: PASCAL_STRING "Copyright Version Soft, 1985 - 1986" +LAF46: PASCAL_STRING "All Rights Reserved" +LAF5A: PASCAL_STRING "Authors: Stephane Cavril, Bernard Gallet, Henri Lamiraux" +LAF93: PASCAL_STRING "Richard Danais and Luc Barthelet" +LAFB4: PASCAL_STRING "With thanks to: A. Gerard, J. Gerber, P. Pahl, J. Bernard" +LAFEE: PASCAL_STRING "November 26, 1986" +LB000: PASCAL_STRING "Version 1.1" + +LB00C: PASCAL_STRING "Copy ..." +LB015: PASCAL_STRING "Now Copying " +LB022: PASCAL_STRING "from:" +LB028: PASCAL_STRING "to :" +LB02D: PASCAL_STRING "Files remaining to copy: " +LB047: PASCAL_STRING "That file already exists. Do you want to write over it ?" +LB080: PASCAL_STRING "This file is too large to copy, click OK to continue." + + .byte $6E,$00,$23 + .byte $00,$AA,$00,$3B,$00 + +LB0BE: PASCAL_STRING "Delete ..." +LB0C9: PASCAL_STRING "Click OK to delete:" +LB0DD: PASCAL_STRING "Clicking OK will immediately empty the trash of:" +LB10E: PASCAL_STRING "File:" +LB114: PASCAL_STRING "Files remaining to be deleted:" +LB133: PASCAL_STRING "This file is locked, do you want to delete it anyway ?" + + .byte $91,$00,$3B,$00,$C8,$00,$3B,$00,$2C,$01,$3B,$00 + +LB176: PASCAL_STRING "New Folder ..." +LB185: PASCAL_STRING "in:" +LB189: PASCAL_STRING "Enter the folder name:" +LB1A0: PASCAL_STRING "Rename an Icon ..." +LB1B3: PASCAL_STRING "Rename: " +LB1BC: PASCAL_STRING "New name:" +LB1C6: PASCAL_STRING "Get Info ..." +LB1D3: PASCAL_STRING "Name" +LB1D8: PASCAL_STRING "Locked" +LB1DF: PASCAL_STRING "Size" +LB1E4: PASCAL_STRING "Creation date" +LB1F2: PASCAL_STRING "Last modification" +LB204: PASCAL_STRING "Type" +LB209: PASCAL_STRING "Write protected" +LB219: PASCAL_STRING "Blocks free/size" +LB22A: PASCAL_STRING ": " + + .byte $A0,$00,$3B,$00 + .byte $91,$00,$3B,$00,$C8,$00,$3B,$00 + .byte $B9,$00,$3B,$00,$CD,$00,$3B,$00 + .byte $C3,$00,$3B,$00 + +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." +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." +LB3C0: PASCAL_STRING "Unlock ..." +LB3CB: PASCAL_STRING "Click OK to unlock " +LB3DF: PASCAL_STRING "Files remaining to be unlocked: " +LB400: PASCAL_STRING "Lock ..." +LB409: PASCAL_STRING "Click OK to lock " +LB41B: PASCAL_STRING "Files remaining to be locked: " +LB43A: PASCAL_STRING "Get Size ..." +LB447: PASCAL_STRING "Number of files" +LB457: PASCAL_STRING "Blocks used on disk" + + .byte $6E,$00,$23,$00,$6E,$00,$2B,$00 + +LB473: PASCAL_STRING "DownLoad ..." +LB480: PASCAL_STRING "The RAMCard is full. The copy was not completed." +LB4B1: PASCAL_STRING " " +LB4B3: PASCAL_STRING "Warning !" +LB4BD: PASCAL_STRING "Please insert the system disk." +LB4DC: PASCAL_STRING "The Selector list is full. You must delete an entry" +LB50C: PASCAL_STRING "before you can add new entries." +LB530: PASCAL_STRING "A window must be closed before opening this new catalog." + +LB569: PASCAL_STRING "There are too many windows open on the desktop !" +LB59A: PASCAL_STRING "Do you want to save the new Selector list" +LB5C4: PASCAL_STRING "on the system disk ?" + + + .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 + +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 + .word $14 ; left + .word $8 ; top + .addr alert_bitmap ; addr + .word 7 ; stride + .word 0 ; left + .word 0 ; top + .word $24 ; width + .word $17 ; height +.endproc + +alert_rect: + .word $41, $57, $1E5, $8E +alert_inner_frame_rect1: + .word $4, $2, $1A0, $35 +alert_inner_frame_rect2: + .word $5, $3, $19F, $34 + +LB6D3: .byte $41 +LB6D4: .byte $00 +LB6D5: .byte $57 +LB6D6: .byte $00,$00,$20,$80,$00,$00,$00,$00 + .byte $00 +LB6DF: .byte $A4 +LB6E0: .byte $01 +LB6E1: .byte $37,$00 + +ok_label: + PASCAL_STRING {"OK ",A2D_GLYPH_RETURN} + +try_again_rect: + .word $14,$25,$78,$30 +try_again_pos: + .word $0019,$002F + +cancel_rect: + .word $12C,$25,$190,$30 +cancel_pos: .word $0131,$002F + .word $00BE,$0010 +LB70F: .word $004B,$001D + +alert_action: .byte $00 +LB714: .byte $00 +LB715: .byte $00 + +try_again_label: + PASCAL_STRING "Try Again A" +cancel_label: + PASCAL_STRING "Cancel Esc" + +LB735: PASCAL_STRING "System Error" +LB742: PASCAL_STRING "I/O error" +LB74C: PASCAL_STRING "No device connected" +LB760: PASCAL_STRING "The disk is write protected." +LB77D: PASCAL_STRING "The syntax of the pathname is invalid." +LB7A4: PASCAL_STRING "Part of the pathname doesn't exist." +LB7C8: PASCAL_STRING "The volume cannot be found." +LB7E4: PASCAL_STRING "The file cannot be found." +LB7FE: PASCAL_STRING "That name already exists. Please use another name." +LB831: PASCAL_STRING "The disk is full." +LB843: PASCAL_STRING "The volume directory cannot hold more than 51 files." +LB878: PASCAL_STRING "The file is locked." +LB88C: PASCAL_STRING "This is not a ProDOS disk." +LB8A7: PASCAL_STRING "There is another volume with that name on the desktop." +LB8DE: PASCAL_STRING "There are 2 volumes with the same name." +LB906: PASCAL_STRING "This file cannot be run." +LB91F: PASCAL_STRING "That name is too long." +LB936: PASCAL_STRING "Please insert source disk" +LB950: PASCAL_STRING "Please insert destination disk" +LB96F: PASCAL_STRING "BASIC.SYSTEM not found" + + ;; number of alert messages +alert_count: + .byte $14 + + ;; message number-to-index table + ;; (look up by scan to determine index) +alert_table: + .byte $00,$27,$28,$2B,$40,$44,$45,$46 + .byte $47,$48,$49,$4E,$52,$57,$F9,$FA + .byte $FB,$FC,$FD,$FE + + ;; alert index to string address +prompt_table: + .addr LB735,LB742,LB74C,LB760,LB77D,LB7A4,LB7C8,LB7E4 + .addr LB7FE,LB831,LB843,LB878,LB88C,LB8A7,LB8DE,LB906 + .addr LB91F,LB936,LB950,LB96F + + ;; 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 + + ;; Show alert; prompt number in X (???), A = ??? +.proc show_alert_dialog + pha + txa + pha + A2D_RELAY2_CALL A2D_HIDE_CURSOR + A2D_RELAY2_CALL A2D_SET_CURSOR, pointer_cursor + A2D_RELAY2_CALL A2D_SHOW_CURSOR + sta ALTZPOFF + sta ROMIN2 + jsr $FBDD + sta ALTZPON + lda LCBANK1 + lda LCBANK1 + ldx #$03 + lda #$00 +LBA0B: sta $D239,x + sta $D241,x + dex + bpl LBA0B + lda #$26 + sta $D245 + lda #$02 + sta $D246 + lda #$B9 + sta $D247 + lda #$00 + sta $D248 + A2D_RELAY2_CALL A2D_SET_STATE, $D239 + lda LB6D3 + ldx LB6D4 + jsr LBF8B + sty LBFCA + sta LBFCD + lda LB6D3 + clc + adc LB6DF + pha + lda LB6D4 + adc LB6E0 + tax + pla + jsr LBF8B + sty LBFCC + sta LBFCE + lda LB6D5 + sta LBFC9 + clc + adc LB6E1 + sta LBFCB + A2D_RELAY2_CALL A2D_HIDE_CURSOR + jsr LBE08 + A2D_RELAY2_CALL A2D_SHOW_CURSOR + A2D_RELAY2_CALL A2D_SET_FILL_MODE, const0 + A2D_RELAY2_CALL A2D_FILL_RECT, alert_rect ; alert background + A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 ; ensures corners are inverted + A2D_RELAY2_CALL A2D_DRAW_RECT, alert_rect ; alert outline + A2D_RELAY2_CALL A2D_SET_BOX, $B6D3 + A2D_RELAY2_CALL A2D_DRAW_RECT, alert_inner_frame_rect1 ; inner 2x border + A2D_RELAY2_CALL A2D_DRAW_RECT, alert_inner_frame_rect2 + A2D_RELAY2_CALL A2D_SET_FILL_MODE, const0 ; restores normal mode + A2D_RELAY2_CALL A2D_HIDE_CURSOR + A2D_RELAY2_CALL A2D_DRAW_BITMAP, alert_bitmap_params + A2D_RELAY2_CALL A2D_SHOW_CURSOR + 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 +LBB14: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + bit alert_action + bpl LBB5C + A2D_RELAY2_CALL A2D_DRAW_RECT, cancel_rect + A2D_RELAY2_CALL A2D_SET_POS, cancel_pos + DRAW_PASCAL_STRING cancel_label + bit alert_action + bvs LBB5C + A2D_RELAY2_CALL A2D_DRAW_RECT, try_again_rect + A2D_RELAY2_CALL A2D_SET_POS, try_again_pos + DRAW_PASCAL_STRING try_again_label + jmp LBB75 +.endproc + +LBB5C: A2D_RELAY2_CALL A2D_DRAW_RECT, try_again_rect + A2D_RELAY2_CALL A2D_SET_POS, try_again_pos + DRAW_PASCAL_STRING ok_label +LBB75: A2D_RELAY2_CALL A2D_SET_POS, $B70F + lda LB714 + ldx LB715 + jsr draw_pascal_string +LBB87: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params + lda alert_input_params + cmp #$01 + bne LBB9A + jmp LBC0C + +LBB9A: cmp #$03 + bne LBB87 + lda alert_input_params+1 + and #$7F + bit alert_action + bpl LBBEE + cmp #$1B + bne LBBC3 + A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect + lda #$01 + jmp LBC55 + +LBBC3: bit alert_action + bvs LBBEE + cmp #$61 + bne LBBE3 +LBBCC: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect + lda #$00 + jmp LBC55 + +LBBE3: cmp #$41 + beq LBBCC + cmp #$0D + beq LBBCC + jmp LBB87 + +LBBEE: cmp #$0D + bne LBC09 + A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect + lda #$02 + jmp LBC55 + +LBC09: jmp LBB87 + +LBC0C: jsr LBDE1 + A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 + bit alert_action + bpl LBC42 + A2D_RELAY2_CALL A2D_TEST_BOX, cancel_rect + cmp #$80 + bne LBC2D + jmp LBCE9 + +LBC2D: bit alert_action + bvs LBC42 + A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect + cmp #$80 + bne LBC52 + jmp LBC6D + +LBC42: A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect + cmp #$80 + bne LBC52 + jmp LBD65 + +LBC52: jmp LBB87 + +LBC55: pha + A2D_RELAY2_CALL A2D_HIDE_CURSOR + jsr LBE5D + A2D_RELAY2_CALL A2D_SHOW_CURSOR + pla + rts + +LBC6D: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect + lda #$00 + sta LBCE8 +LBC84: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params + lda alert_input_params + cmp #$02 + beq LBCDB + jsr LBDE1 + A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 + A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect + cmp #$80 + beq LBCB5 + lda LBCE8 + beq LBCBD + jmp LBC84 + +LBCB5: lda LBCE8 + bne LBCBD + jmp LBC84 + +LBCBD: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, 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 +LBCE9: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect + lda #$00 + sta LBD64 +LBD00: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params + lda alert_input_params + cmp #$02 + beq LBD57 + jsr LBDE1 + A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 + A2D_RELAY2_CALL A2D_TEST_BOX, cancel_rect + cmp #$80 + beq LBD31 + lda LBD64 + beq LBD39 + jmp LBD00 + +LBD31: lda LBD64 + bne LBD39 + jmp LBD00 + +LBD39: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, 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 + A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect +LBD7C: A2D_RELAY2_CALL A2D_GET_INPUT, alert_input_params + lda alert_input_params + cmp #$02 + beq LBDD3 + jsr LBDE1 + A2D_RELAY2_CALL A2D_SET_POS, alert_input_params+1 + A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect + cmp #$80 + beq LBDAD + lda LBDE0 + beq LBDB5 + jmp LBD7C + +LBDAD: lda LBDE0 + bne LBDB5 + jmp LBD7C + +LBDB5: A2D_RELAY2_CALL A2D_SET_FILL_MODE, const2 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect + lda LBDE0 + clc + adc #$80 + sta LBDE0 + jmp LBD7C + +LBDD3: lda LBDE0 + beq LBDDB + jmp LBB87 + +LBDDB: lda #$02 + jmp LBC55 + +LBDE0: .byte 0 +LBDE1: lda alert_input_params+1 + sec + sbc LB6D3 + sta alert_input_params+1 + lda alert_input_params+2 + sbc LB6D4 + sta alert_input_params+2 + lda $D20B + sec + sbc LB6D5 + sta $D20B + lda $D20C + sbc LB6D6 + sta $D20C + 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 LOWSCR + bcs LBE34 + sta HISCR +LBE34: lda ($06),y +LBE37 := * + 1 +LBE38 := * + 2 + sta $1234 + 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 + sta LBEBD + 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 LOWSCR + bcs LBEBB + sta HISCR +LBEBB: .byte $AD +LBEBC: .byte 0 +LBEBD: php + 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 + inc LBEBD +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 +call: A2D_RELAY2_CALL A2D_DRAW_TEXT, ptr +end: rts +.endproc + + ;; A2D call in Y, params addr (X,A) +.proc A2D_RELAY2 + sty call + sta addr + stx addr+1 + jsr A2D +call: .byte 0 +addr: .addr 0 + rts +.endproc + + .byte 0 + .byte 0 + .byte 0 + .byte 0 + + .assert * = $C000, error, "Segment expected to fill through $C000" + +;;; ================================================== +;;; +;;; $C000 - $CFFF is I/O Space +;;; +;;; ================================================== + + .org $D000 + +;;; Various routines callable from MAIN + + ;; A2D call from main>aux, call in Y, params at (X,A) +.proc A2D_RELAY_IMPL + .assert * = A2D_RELAY, error, "Entry point mismatch" + sty addr-1 + sta addr + stx addr+1 + sta RAMRDON + sta RAMWRTON + A2D_CALL 0, 0, addr + sta RAMRDOFF + sta RAMWRTOFF + rts +.endproc + + ;; SET_POS with params at (X,A) followed by DRAW_TEXT call +.proc SETPOS_RELAY_IMPL + .assert * = SETPOS_RELAY, error, "Entry point mismatch" + sta addr + stx addr+1 + sta RAMRDON + sta RAMWRTON + A2D_CALL A2D_SET_POS, 0, addr + A2D_RELAY_CALL A2D_DRAW_TEXT, text_buffer2 + tay + sta RAMRDOFF + sta RAMWRTOFF + tya + rts +.endproc + + ;; 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 + + ;; Find first 0 in AUX $1F80 ... $1F7F; if present, + ;; mark it 1 and return index+1 in A +.proc DESKTOP_FIND_SPACE_IMPL + .assert * = DESKTOP_FIND_SPACE, error, "Entry point mismatch" + 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 + + ;; Zero the AUX $1F80 table entry in A +.proc DESKTOP_FREE_SPACE_IMPL + .assert * = DESKTOP_FREE_SPACE, error, "Entry point mismatch" + tay + sta RAMRDON + sta RAMWRTON + dey + lda #0 + sta $1F80,y + sta RAMRDOFF + sta RAMWRTOFF + rts +.endproc + + ;; Copy data to/from buffers (see bufnum / buf3 / table1/2) ??? +.proc DESKTOP_COPY_BUF_IMPL + ptr := $6 + + .assert * = DESKTOP_COPY_FROM_BUF, error, "Entry point mismatch" + lda #$80 + bne :+ ; always + + .assert * = DESKTOP_COPY_TO_BUF, error, "Entry point mismatch" + lda #$00 + +: sta flag + jsr DESKTOP_MAIN_PUSH_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 + jsr DESKTOP_MAIN_POP_ADDRS + rts + +flag: .byte 0 + rts ; ??? +.endproc + + ;; Assign active state to DESKTOP_WINID window +.proc DESKTOP_ASSIGN_STATE_IMPL + src := $6 + dst := $8 + + sta RAMRDON + sta RAMWRTON + A2D_CALL A2D_GET_STATE, src ; grab window state + + lda DESKTOP_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 + + ;; From MAIN, load AUX (X,A) into A +.proc DESKTOP_AUXLOAD_IMPL + .assert * = DESKTOP_AUXLOAD, error, "Entry point mismatch" + stx op+2 + sta op+1 + sta RAMRDON + sta RAMWRTON +op: lda $1234 + sta RAMRDOFF + sta RAMWRTOFF + rts +.endproc + + ;; From MAIN, show alert with prompt #0 +.proc DESKTOP_SHOW_ALERT0_IMPL + .assert * = DESKTOP_SHOW_ALERT0, error, "Entry point mismatch" + ldx #$00 + ;; fall through +.endproc + + ;; From MAIN, show alert with prompt # in X +.proc DESKTOP_SHOW_ALERT_IMPL + .assert * = DESKTOP_SHOW_ALERT, error, "Entry point mismatch" + sta RAMRDON + sta RAMWRTON + jsr show_alert_indirection + sta RAMRDOFF + sta RAMWRTOFF + rts +.endproc + +;;; ============================================================ + + .res 154, 0 + +const0: .byte 0 +const1: .byte 1 +const2: .byte 2 +const3: .byte 3 +const4: .byte 4 +const5: .byte 5 +const6: .byte 6 +const7: .byte 7 + +alert_input_params: + .byte $00,$00,$00,$00,$00,$00 + + .byte $00,$00,$00,$00,$00 + .addr buffer +buffer: .byte $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,$20,$80,$00,$00 + .byte $00,$00,$00,$0A,$00,$0A,$00,$FF + .byte $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF + .byte $00,$00,$00,$00,$00,$01,$01,$00 + .byte $00,$00,$88,$FF,$FF,$FF,$FF,$FF + .byte $FF,$FF,$FF,$FF,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$FF + +LD293: + .byte px(%1010101) + .byte PX(%0101010) + .byte px(%1010101) + .byte PX(%0101010) + .byte px(%1010101) + .byte PX(%0101010) + .byte px(%1010101) + .byte PX(%0101010) + + .byte $FF,$06,$EA + .byte $00,$00,$00,$00,$88,$00,$08,$00 + .byte $13,$00,$00,$00,$00,$00,$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 +LD2DF: + .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 +LD311: + .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 + + .res 384, 0 + + .byte $00,$00 + +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) + +LD56D: + .word $28, $8 ; left, top + .addr alert_bitmap2 + .byte $07 ; stride + .byte $00 + .word 0, 0, $24, $17 ; hoff, voff, width, height + + ;; Looks like window param blocks starting here + +.proc winF +id: .byte $0F +flags: .byte A2D_CWF_NOTITLE +title: .addr 0 +hscroll:.byte A2D_CWS_NOSCROLL +vscroll:.byte A2D_CWS_NOSCROLL +hsmax: .byte 0 +hspos: .byte 0 +vsmax: .byte 0 +vspos: .byte 0 + .byte 0,0 ; ??? +w1: .word $96 +h1: .word $32 +w2: .word $1F4 +h2: .word $8C +left: .word $4B +top: .word $23 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word $190 +height: .word $64 +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +fill: .byte 0 +tmask: .byte A2D_DEFAULT_TMASK +font: .addr A2D_DEFAULT_FONT +next: .addr 0 +.endproc + +.proc win12 +id: .byte $12 +flags: .byte A2D_CWF_NOTITLE +title: .addr 0 +hscroll:.byte A2D_CWS_NOSCROLL +vscroll:.byte A2D_CWS_NOSCROLL +hsmax: .byte 0 +hspos: .byte 0 +vsmax: .byte 0 +vspos: .byte 0 + .byte 0,0 ; ??? +w1: .word $96 +h1: .word $32 +w2: .word $1F4 +h2: .word $8C +left: .word $19 +top: .word $14 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word $1F4 +height: .word $99 +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +mode: .byte 0 +tmask: .byte A2D_DEFAULT_TMASK +font: .addr A2D_DEFAULT_FONT +next: .addr 0 +.endproc + +.proc win15 +id: .byte $15 +flags: .byte A2D_CWF_NOTITLE +title: .addr 0 +hscroll:.byte A2D_CWS_NOSCROLL +vscroll:.byte A2D_CWS_SCROLL_NORMAL +hsmax: .byte 0 +hspos: .byte 0 +vsmax: .byte 3 +vspos: .byte 0 + .byte 0,0 ; ??? +w1: .word $64 +h1: .word $46 +w2: .word $64 +h2: .word $46 +left: .word $35 +top: .word $32 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word $7D +height: .word $46 +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +mode: .byte 0 +tmask: .byte A2D_DEFAULT_TMASK +font: .addr A2D_DEFAULT_FONT +next: .addr 0 +.endproc + +.proc win18 +id: .byte $18 +flags: .byte A2D_CWF_NOTITLE +title: .addr 0 +hscroll:.byte A2D_CWS_NOSCROLL +vscroll:.byte A2D_CWS_NOSCROLL +hsmax: .byte 0 +hspos: .byte 0 +vsmax: .byte 0 +vspos: .byte 0 + .byte 0,0 ; ??? +w1: .word $96 +h1: .word $32 +w2: .word $1F4 +h2: .word $8C +state: +left: .word $50 +top: .word $28 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word $190 +height: .word $6E +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +mode: .byte 0 +tmask: .byte A2D_DEFAULT_TMASK +font: .addr A2D_DEFAULT_FONT +next: .addr 0 +.endproc + +.proc win1B +id: .byte $1B +flags: .byte A2D_CWF_NOTITLE +title: .addr 0 +hscroll:.byte A2D_CWS_NOSCROLL +vscroll:.byte A2D_CWS_NOSCROLL +hsmax: .byte 0 +hspos: .byte 0 +vsmax: .byte 0 +vspos: .byte 0 + .byte 0,0 ; ??? +w1: .word $96 +h1: .word $32 +w2: .word $1F4 +h2: .word $8C +left: .word $69 +top: .word $19 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word $15E +height: .word $6E +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +mode: .byte 0 +tmask: .byte A2D_DEFAULT_TMASK +font: .addr A2D_DEFAULT_FONT +next: .addr 0 +.endproc + + ;; Coordinates for labels? + .byte $28,$00,$25,$00,$68,$01,$2F,$00,$2D,$00,$2E,$00,$28,$00,$3D,$00,$68,$01,$47,$00,$2D,$00,$46,$00,$00,$00,$12,$00,$28,$00,$12,$00,$28,$00,$23,$00,$28,$00,$00,$00 + + .word $4B, $23 ; left, top + .addr A2D_SCREEN_ADDR + .word A2D_SCREEN_STRIDE + .word 0, 0 ; width, height + + .byte $66,$01,$64,$00,$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 {A2D_GLYPH_OAPPLE,"1 Run list"} + PASCAL_STRING {A2D_GLYPH_OAPPLE,"2 Other Run list"} + PASCAL_STRING "Down load:" + PASCAL_STRING {A2D_GLYPH_OAPPLE,"3 at first boot"} + PASCAL_STRING {A2D_GLYPH_OAPPLE,"4 at first use"} + PASCAL_STRING {A2D_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 + .byte $1A,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$14,$00,$00,$00,$00 + .byte $01,$06,$00,$00,$00,$00,$00,$00 + .byte $01,$00 + + PASCAL_STRING " " + + PASCAL_STRING "Files" + + PASCAL_STRING " " + + .byte $00,$00,$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 ",A2D_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:" + + .res 40, 0 + + .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 896, 0 + + .byte $00 + + ;; Used by DESKTOP_COPY_*_BUF + .assert * = DESKTOP_BUFNUM, error, "Entry point mismatch" +bufnum: .byte $00 +buf3len:.byte 0 +buf3: .res 256, 0 + + ;; Buffer for desktop windows +win_table: + .addr 0,win1,win2,win3,win4,win5,win6,win7,win8 + + .addr $0000 + .repeat 8,i + .addr buf2+i*$41 + .endrepeat + + .byte $00,$00,$00,$00,$00 + + .res 144, 0 + + .byte $00,$00,$00,$00,$0D,$00,$00,$00 + + .res 440, 0 + + .byte $00,$00,$00,$00,$7F,$64,$00,$1C + .byte $00,$1E,$00,$32,$00,$1E,$00,$40 + .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,$04,$00,$00,$00,$04,$00,$00 + .byte $04,$00,$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" + +sd0: A2D_DEFSTRING "Slot drive ", sd0s +sd1: A2D_DEFSTRING "Slot drive ", sd1s +sd2: A2D_DEFSTRING "Slot drive ", sd2s +sd3: A2D_DEFSTRING "Slot drive ", sd3s +sd4: A2D_DEFSTRING "Slot drive ", sd4s +sd5: A2D_DEFSTRING "Slot drive ", sd5s +sd6: A2D_DEFSTRING "Slot drive ", sd6s +sd7: A2D_DEFSTRING "Slot drive ", sd7s +sd8: A2D_DEFSTRING "Slot drive ", sd8s +sd9: A2D_DEFSTRING "Slot drive ", sd9s +sd10: A2D_DEFSTRING "Slot drive ", sd10s +sd11: A2D_DEFSTRING "Slot drive ", sd11s +sd12: A2D_DEFSTRING "Slot drive ", sd12s +sd13: A2D_DEFSTRING "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 + + PASCAL_STRING "ProFile Slot x " + PASCAL_STRING "UniDisk 3.5 Sx,y " + PASCAL_STRING "RAMCard Slot x " + 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 + + .byte $01,$00,$01,$00,$9A,$E6,$8E,$E6 + .byte $00,$00,$00,$00,$00,$00,$01,$00 + .byte $01,$00,$B7,$E6,$8E,$E6,$00,$00 + .byte $00,$00,$00,$00,$01,$00,$00,$00 + .byte $00,$00,$00,$00,$00,$00,$B9,$E6 + + PASCAL_STRING "Apple II DeskTop Version 1.1" + + .byte $01,$20,$04 + .byte $52,$69,$65,$6E,$00,$00,$00,$5D + .byte $E7,$A9,$E7,$F5,$E7,$41,$E8,$8D + .byte $E8,$D9,$E8,$25,$E9,$71,$E9,$00 + .byte $00,$00,$00,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$70,$00,$00,$00,$8C + .byte $00,$00,$00,$E7,$00,$00,$00 + +.proc text_buffer2 + .addr data + .byte 0 +data: .res 55, 0 +.endproc + +.macro WIN_PARAMS_DEFN window_id, label, buflabel +.proc label +id: .byte window_id +flags: .byte A2D_CWF_ADDCLOSE | A2D_CWF_ADDRESIZE +title: .addr buflabel +hscroll:.byte A2D_CWS_SCROLL_NORMAL +vscroll:.byte A2D_CWS_SCROLL_NORMAL +hsmax: .byte 3 +hspos: .byte 0 +vsmax: .byte 3 +vspos: .byte 0 + .byte 0,0 ; ??? +w1: .word 170 +h1: .word 50 +w2: .word 545 +h2: .word 175 +left: .word 20 +top: .word 27 +addr: .addr A2D_SCREEN_ADDR +stride: .word A2D_SCREEN_STRIDE +hoff: .word 0 +voff: .word 0 +width: .word 440 +height: .word 120 +pattern:.res 8, $FF +mskand: .byte A2D_DEFAULT_MSKAND +mskor: .byte A2D_DEFAULT_MSKOR +xpos: .word 0 +ypos: .word 0 +hthick: .byte 1 +vthick: .byte 1 +mode: .byte 0 +tmask: .byte A2D_DEFAULT_TMASK +font: .addr A2D_DEFAULT_FONT +next: .addr 0 +.endproc +buflabel:.res 18, 0 +.endmacro + + WIN_PARAMS_DEFN 1, win1, win1buf + WIN_PARAMS_DEFN 2, win2, win2buf + WIN_PARAMS_DEFN 3, win3, win3buf + WIN_PARAMS_DEFN 4, win4, win4buf + WIN_PARAMS_DEFN 5, win5, win5buf + WIN_PARAMS_DEFN 6, win6, win6buf + WIN_PARAMS_DEFN 7, win7, win7buf + WIN_PARAMS_DEFN 8, win8, win8buf + +buf2: .res 560, 0 + + PASCAL_STRING " Items" + + .byte $08,$00,$0A,$00,$00,$00,$00,$00 + .byte $00,$00,$00,$00 + + PASCAL_STRING "K in disk" + PASCAL_STRING "K available" + PASCAL_STRING " " + + .byte $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 + + ;; 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 + + .assert * = DESKTOP_WINID, error, "Entry point mismatch" +desktop_winid: + .byte $00 + .res 64, 0 + .word 500, 160 + .res 150, 0 + + .assert * = $ED00, error, "Segment expected to fill through $ED00" + +;;; ================================================== +;;; +;;; $ED00 - $FAFF is data buffers +;;; +;;; ================================================== + + .org $FB00 + +LFB00: .addr type_table +LFB02: .addr type_icons +LFB04: .addr LFB11 +LFB06: .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 + + ;; ??? +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) + + .res 70, 0 +.endproc ; desktop_aux + desktop_win18_state := desktop_aux::win18::state + +.proc desktop_main L0000 := $0000 L0006 := $0006 L0020 := $0020 @@ -14029,3 +19249,4 @@ LBEB1: A2D_RELAY_CALL A2D_QUERY_SCREEN, $D239 rts .res 60, 0 +.endproc diff --git a/desktop/s0_loader.s b/desktop/loader.s similarity index 100% rename from desktop/s0_loader.s rename to desktop/loader.s diff --git a/desktop/orig/DESKTOP2_s123_aux b/desktop/orig/DESKTOP2_s123_aux deleted file mode 100644 index f7da6ae..0000000 Binary files a/desktop/orig/DESKTOP2_s123_aux and /dev/null differ diff --git a/desktop/orig/DESKTOP2_s4_main1 b/desktop/orig/DESKTOP2_s4_main1 deleted file mode 100644 index c7ed7b2..0000000 Binary files a/desktop/orig/DESKTOP2_s4_main1 and /dev/null differ