From dd02732f5ce1370458e47096b8ee7ba31a2b23af Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Sat, 7 Oct 2017 21:26:27 -0700 Subject: [PATCH] DeskTop Seg 1: relay call documentation --- desktop/s1_aux1.s | 271 ++++++++++++++++++++++++++++------------------ 1 file changed, 164 insertions(+), 107 deletions(-) diff --git a/desktop/s1_aux1.s b/desktop/s1_aux1.s index 7ceb04b..88f46e6 100644 --- a/desktop/s1_aux1.s +++ b/desktop/s1_aux1.s @@ -15,8 +15,13 @@ LD2D0 := $D2D0 .macro A2D_RELAY2_CALL call, addr ldy #call + .if .paramcount = 1 + lda #0 + ldx #0 + .else lda #addr + .endif jsr A2D_RELAY2 .endmacro @@ -9210,21 +9215,21 @@ set_fill_mode_params5: .byte $05,$06,$07 ;; DESKTOP command jump table -L939E: .addr 0 - .addr L9419 - .addr L9454 - .addr L94C0 - .addr L9508 - .addr L95A2 - .addr L9692 - .addr L96D2 - .addr L975B - .addr L977D - .addr L97F7 - .addr L9EBE - .addr LA2A6 - .addr L9EFB - .addr L958F +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 @@ -9304,6 +9309,8 @@ ycoord: .word 0 ;;; ================================================== +;;; DESKTOP $01 IMPL + L9419: ldy #$00 lda ($06),y @@ -9338,6 +9345,10 @@ L943E: ldx L8E95 sta L8F15+1,x rts +;;; ================================================== + +;;; DESKTOP $02 IMPL + L9454: ldx L8E95 beq L9466 dex @@ -9397,6 +9408,8 @@ L949D: ldx L9016 ;;; ================================================== +;;; DESKTOP $03 IMPL + L94C0: ldx L8E95 beq L94D2 @@ -9440,6 +9453,8 @@ L9502: jsr L9F98 ;;; ================================================== +;;; DESKTOP $04 IMPL + L9508: ldy #$00 ldx L8E95 @@ -9506,6 +9521,8 @@ L958C: lda #$00 ;;; ================================================== +;;; DESKTOP $0E IMPL + L958F: ldy #$00 lda ($06),y @@ -9519,6 +9536,8 @@ L958F: ;;; ================================================== +;;; DESKTOP $05 IMPL + L95A2: jmp L9625 @@ -9580,6 +9599,8 @@ L9681: sta L95A5 ;;; ================================================== +;;; DESKTOP $06 IMPL + L9692: jmp L9697 @@ -9614,6 +9635,8 @@ L96CF: lda #$00 ;;; ================================================== +;;; DESKTOP $07 IMPL + L96D2: jmp L96D7 @@ -9681,6 +9704,8 @@ L9758: jmp L96DD ;;; ================================================== +;;; DESKTOP $08 IMPL + L975B: ldx #$00 txa @@ -9705,6 +9730,8 @@ L977A: lda #$00 ;;; ================================================== +;;; DESKTOP $09 IMPL + L977D: jmp L9789 @@ -9776,6 +9803,10 @@ L97E6: pla L97F5: .byte 0 L97F6: .byte 0 +;;; ================================================== + +;;; DESKTOP $0A IMPL + L97F7: ldy #$00 lda ($06),y @@ -10539,6 +10570,8 @@ L9EB4: asl a ;;; ================================================== +;;; DESKTOP $08 IMPL + L9EBE: jmp L9EC3 @@ -10572,6 +10605,8 @@ L9EEA: ldy #$00 ;;; ================================================== +;;; DESKTOP $0D IMPL + L9EFB: jmp L9F07 @@ -10958,6 +10993,8 @@ LA2A5: .byte 0 ;;; ================================================== +DESKTOP_REDRAW_ICONS_IMPL: + LA2A6: jmp LA2AE @@ -12070,7 +12107,7 @@ LAAB8: .byte $00,$00,$00,$00,$00,$00,$00,$4C .byte $D7,$B9 -LB603: +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) @@ -12096,13 +12133,16 @@ LB603: .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) - .byte $14,$00,$08,$00 - .addr LB603 ; addr +.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 .byte $41,$00,$57,$00,$E5,$01 .byte $8E,$00,$04,$00,$02,$00,$A0,$01 @@ -12117,19 +12157,28 @@ LB6DF: .byte $A4 LB6E0: .byte $01 LB6E1: .byte $37,$00 -LB6E3: PASCAL_STRING {"OK ",A2D_GLYPH_RETURN} +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 - .byte $14,$00,$25,$00,$78,$00 - .byte $30,$00,$19,$00,$2F,$00,$2C,$01 - .byte $25,$00,$90,$01,$30,$00,$31,$01 - .byte $2F,$00,$BE,$00,$10,$00,$4B,$00 - .byte $1D,$00 LB713: .byte $00 LB714: .byte $00 LB715: .byte $00 -LB716: PASCAL_STRING "Try Again A" -LB726: PASCAL_STRING "Cancel Esc" +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" @@ -12186,7 +12235,7 @@ LBA0B: sta $D239,x sta $D247 lda #$00 sta $D248 - A2D_RELAY2_CALL $04, $D239 + A2D_RELAY2_CALL A2D_SET_STATE, $D239 lda LB6D3 ldx LB6D4 jsr LBF8B @@ -12208,20 +12257,20 @@ LBA0B: sta $D239,x clc adc LB6E1 sta LBFCB - A2D_RELAY2_CALL $26, $0000 + A2D_RELAY2_CALL A2D_HIDE_CURSOR jsr LBE08 - A2D_RELAY2_CALL $25, $0000 - A2D_RELAY2_CALL $07, $D200 - A2D_RELAY2_CALL $11, $B6BB - A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $12, $B6BB - A2D_RELAY2_CALL $06, $B6D3 - A2D_RELAY2_CALL $12, $B6C3 - A2D_RELAY2_CALL $12, $B6CB - A2D_RELAY2_CALL $07, $D200 - A2D_RELAY2_CALL $26, $0000 - A2D_RELAY2_CALL $14, $B6AB - A2D_RELAY2_CALL $25, $0000 + A2D_RELAY2_CALL A2D_SHOW_CURSOR + A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D200 + A2D_RELAY2_CALL A2D_FILL_RECT, $B6BB + A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_DRAW_RECT, $B6BB + A2D_RELAY2_CALL A2D_SET_BOX, $B6D3 + A2D_RELAY2_CALL A2D_DRAW_RECT, $B6C3 + A2D_RELAY2_CALL A2D_DRAW_RECT, $B6CB + A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D200 + A2D_RELAY2_CALL A2D_HIDE_CURSOR + A2D_RELAY2_CALL A2D_DRAW_BITMAP, alert_bitmap_params + A2D_RELAY2_CALL A2D_SHOW_CURSOR pla tax pla @@ -12246,38 +12295,38 @@ LBAEF: tya sta LB713 jmp LBB14 +.macro DRAW_PASCAL_STRING addr + lda #addr + jsr draw_pascal_string +.endmacro + LBB0B: tya lsr a tay lda LB9C3,y sta LB713 -LBB14: A2D_RELAY2_CALL $07, $D202 +LBB14: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 bit LB713 bpl LBB5C - A2D_RELAY2_CALL $12, $B6FF - A2D_RELAY2_CALL $0E, $B707 - lda #$26 - ldx #$B7 - jsr LBFD0 + A2D_RELAY2_CALL A2D_DRAW_RECT, cancel_rect + A2D_RELAY2_CALL A2D_SET_POS, cancel_pos + DRAW_PASCAL_STRING cancel_label bit LB713 bvs LBB5C - A2D_RELAY2_CALL $12, $B6F3 - A2D_RELAY2_CALL $0E, $B6FB - lda #$16 - ldx #$B7 - jsr LBFD0 + 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 -LBB5C: A2D_RELAY2_CALL $12, $B6F3 - A2D_RELAY2_CALL $0E, $B6FB - lda #$E3 - ldx #$B6 - jsr LBFD0 -LBB75: A2D_RELAY2_CALL $0E, $B70F +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 LBFD0 -LBB87: A2D_RELAY2_CALL $2A, $D208 + jsr draw_pascal_string +LBB87: A2D_RELAY2_CALL A2D_GET_INPUT, $D208 lda $D208 cmp #$01 bne LBB9A @@ -12291,8 +12340,8 @@ LBB9A: cmp #$03 bpl LBBEE cmp #$1B bne LBBC3 - A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6FF + A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect lda #$01 jmp LBC55 @@ -12300,8 +12349,8 @@ LBBC3: bit LB713 bvs LBBEE cmp #$61 bne LBBE3 -LBBCC: A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6F3 +LBBCC: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect lda #$00 jmp LBC55 @@ -12313,30 +12362,30 @@ LBBE3: cmp #$41 LBBEE: cmp #$0D bne LBC09 - A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6F3 + A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect lda #$02 jmp LBC55 LBC09: jmp LBB87 LBC0C: jsr LBDE1 - A2D_RELAY2_CALL $0E, $D209 + A2D_RELAY2_CALL A2D_SET_POS, $D209 bit LB713 bpl LBC42 - A2D_RELAY2_CALL $13, $B6FF + A2D_RELAY2_CALL A2D_TEST_BOX, cancel_rect cmp #$80 bne LBC2D jmp LBCE9 LBC2D: bit LB713 bvs LBC42 - A2D_RELAY2_CALL $13, $B6F3 + A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect cmp #$80 bne LBC52 jmp LBC6D -LBC42: A2D_RELAY2_CALL $13, $B6F3 +LBC42: A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect cmp #$80 bne LBC52 jmp LBD65 @@ -12344,23 +12393,23 @@ LBC42: A2D_RELAY2_CALL $13, $B6F3 LBC52: jmp LBB87 LBC55: pha - A2D_RELAY2_CALL $26, $0000 + A2D_RELAY2_CALL A2D_HIDE_CURSOR jsr LBE5D - A2D_RELAY2_CALL $25, $0000 + A2D_RELAY2_CALL A2D_SHOW_CURSOR pla rts -LBC6D: A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6F3 +LBC6D: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect lda #$00 sta LBCE8 -LBC84: A2D_RELAY2_CALL $2A, $D208 +LBC84: A2D_RELAY2_CALL A2D_GET_INPUT, $D208 lda $D208 cmp #$02 beq LBCDB jsr LBDE1 - A2D_RELAY2_CALL $0E, $D209 - A2D_RELAY2_CALL $13, $B6F3 + A2D_RELAY2_CALL A2D_SET_POS, $D209 + A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect cmp #$80 beq LBCB5 lda LBCE8 @@ -12371,8 +12420,8 @@ LBCB5: lda LBCE8 bne LBCBD jmp LBC84 -LBCBD: A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6F3 +LBCBD: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect lda LBCE8 clc adc #$80 @@ -12387,17 +12436,17 @@ LBCE3: lda #$00 jmp LBC55 LBCE8: .byte 0 -LBCE9: A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6FF +LBCE9: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect lda #$00 sta LBD64 -LBD00: A2D_RELAY2_CALL $2A, $D208 +LBD00: A2D_RELAY2_CALL A2D_GET_INPUT, $D208 lda $D208 cmp #$02 beq LBD57 jsr LBDE1 - A2D_RELAY2_CALL $0E, $D209 - A2D_RELAY2_CALL $13, $B6FF + A2D_RELAY2_CALL A2D_SET_POS, $D209 + A2D_RELAY2_CALL A2D_TEST_BOX, cancel_rect cmp #$80 beq LBD31 lda LBD64 @@ -12408,8 +12457,8 @@ LBD31: lda LBD64 bne LBD39 jmp LBD00 -LBD39: A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6FF +LBD39: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, cancel_rect lda LBD64 clc adc #$80 @@ -12426,15 +12475,15 @@ LBD5F: lda #$01 LBD64: .byte 0 LBD65: lda #$00 sta LBDE0 - A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6F3 -LBD7C: A2D_RELAY2_CALL $2A, $D208 + A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect +LBD7C: A2D_RELAY2_CALL A2D_GET_INPUT, $D208 lda $D208 cmp #$02 beq LBDD3 jsr LBDE1 - A2D_RELAY2_CALL $0E, $D209 - A2D_RELAY2_CALL $13, $B6F3 + A2D_RELAY2_CALL A2D_SET_POS, $D209 + A2D_RELAY2_CALL A2D_TEST_BOX, try_again_rect cmp #$80 beq LBDAD lda LBDE0 @@ -12445,8 +12494,8 @@ LBDAD: lda LBDE0 bne LBDB5 jmp LBD7C -LBDB5: A2D_RELAY2_CALL $07, $D202 - A2D_RELAY2_CALL $11, $B6F3 +LBDB5: A2D_RELAY2_CALL A2D_SET_FILL_MODE, $D202 + A2D_RELAY2_CALL A2D_FILL_RECT, try_again_rect lda LBDE0 clc adc #$80 @@ -12707,23 +12756,31 @@ LBFCD: .byte $00 LBFCE: .byte $00 LBFCF: .byte $00 -LBFD0: sta $06 - stx $07 - ldy #$00 - lda ($06),y - beq LBFEB - sta $08 - inc $06 - bne LBFE2 - inc $07 -LBFE2: A2D_RELAY2_CALL $19, $0006 -LBFEB: rts + ;; 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-1 - sta call - stx call+1 - A2D_CALL 0, 0, call + sty call + sta addr + stx addr+1 + jsr A2D +call: .byte 0 +addr: .addr 0 rts .endproc