procs for commands

This commit is contained in:
Joshua Bell 2018-01-19 19:41:20 -08:00
parent c9cfba2e3a
commit 2d979db830
2 changed files with 157 additions and 86 deletions

View File

@ -6695,20 +6695,21 @@ cmd_noop: rts
;;; ==================================================
cmd_selector_action:
.proc cmd_selector_action
jsr set_watch_cursor
lda #dynamic_routine_selector1
jsr load_dynamic_routine
bmi L4961
bmi done
lda $E25B
cmp #$03
bcs L492E
lda #dynamic_routine_selector2
jsr load_dynamic_routine
bmi L4961
bmi done
lda #dynamic_routine_common
jsr load_dynamic_routine
bmi L4961
bmi done
L492E: jsr set_pointer_cursor
lda $E25B
jsr dynamic_routine_9000
@ -6718,17 +6719,17 @@ L492E: jsr set_pointer_cursor
jsr restore_dynamic_routine
lda $E25B
cmp #$04
bne L4961
bne done
lda L498F
bpl L4961
bpl done
jsr L4AAD
jsr L4A77
jsr L4AFD
bpl L497A
jsr L8F24
bmi L4961
bmi done
jsr L4968
L4961: jsr set_pointer_cursor
done: jsr set_pointer_cursor
jsr L4523
rts
@ -6747,9 +6748,13 @@ L4980: lda L0800,x
dex
bpl L4980
jsr L4A17
jmp L4961
jmp done
L498F: .byte $00
.endproc
;;; ==================================================
.proc get_file_info_params3
params: .byte $A
@ -6765,12 +6770,11 @@ cdate: .word 0
ctime: .word 0
.endproc
;;; ==================================================
cmd_selector_item:
jmp L49A6
L49A5: .byte 0
L49A6: lda $E25B
sec
sbc #$06
@ -7025,19 +7029,22 @@ L4B9C: inx
ldx #$4F
rts
;;; ==================================================
L4BB0: .byte 0
L4BB1: .byte 0
;;; ==================================================
cmd_about:
yax_call LA500, $0000, $00
jmp L4523
;;; ==================================================
.proc cmd_deskacc_impl
L4BBE: .byte $80
cmd_deskacc:
jsr L4510
start: jsr L4510
jsr set_watch_cursor
lda $E25B
sec
@ -7126,11 +7133,16 @@ L4C86: .byte $00
L4C87: .byte $09
L4C88: PASCAL_STRING "Desk.acc/"
.res 15, 0
.endproc
cmd_deskacc := cmd_deskacc_impl::start
;;; ==================================================
L4CA1: .byte $00
cmd_copy_file:
;;; ==================================================
.proc cmd_copy_file
jsr set_watch_cursor
lda #dynamic_routine_common
jsr load_dynamic_routine
@ -7182,6 +7194,9 @@ L4D01: dey
ldy LDFC9
jsr L6F4B
jmp L4523
.endproc
;;; ==================================================
L4D19: ldy #$00
lda ($06),y
@ -7221,7 +7236,7 @@ L4D4E: stx $E04B
;;; ==================================================
cmd_delete_file:
.proc cmd_delete_file
jsr set_watch_cursor
lda #dynamic_routine_common
jsr load_dynamic_routine
@ -7283,10 +7298,11 @@ L4DD2: dey
ldy $E00A
jsr L6F4B
jmp L4523
.endproc
;;; ==================================================
cmd_open:
.proc cmd_open
ldx #$00
L4DEC: cpx is_file_selected
bne L4DF2
@ -7359,11 +7375,12 @@ L4E51: lda ($06),y
lda L4E71
L4E6E: jmp launch_file
L4E71: .byte 0
.endproc
;;; ==================================================
L4E71: .byte 0
cmd_close:
.proc cmd_close
lda desktop_winid
bne L4E78
rts
@ -7441,28 +7458,33 @@ L4F3C: lda #$00
A2D_RELAY_CALL $36, LE267 ; ???
jsr L66A2
jmp L4510
.endproc
;;; ==================================================
cmd_close_all:
.proc cmd_close_all
lda desktop_winid
beq L4F5B
jsr cmd_close
jmp cmd_close_all
L4F5B: rts
.endproc
;;; ==================================================
cmd_disk_copy:
.proc cmd_disk_copy
lda #dynamic_routine_disk_copy
jsr load_dynamic_routine
bmi L4F66
jmp dynamic_routine_800
L4F66: rts
.endproc
;;; ==================================================
L4F66: rts
.proc cmd_new_folder_impl
L4F67: .byte $00
L4F68: .byte $00
@ -7471,21 +7493,17 @@ L4F69: .byte $00
.proc create_params
params: .byte 7
path: .addr L4F76
access: .byte $C3
type: .byte $0F
access: .byte %11000011 ; destroy/rename/write/read
type: .byte FT_DIRECTORY
auxtype:.word 0
storage:.byte $0D
storage:.byte ST_LINKED_DIRECTORY
cdate: .word 0
ctime: .word 0
.endproc
;;; ==================================================
L4F76: .res 65, 0 ; buffer is used elsewhere too
L4F76: .res 64
.byte $00
cmd_new_folder:
lda desktop_winid
start: lda desktop_winid
sta L4F67
yax_call LA500, L4F67, $03
L4FC6: lda desktop_winid
@ -7538,12 +7556,15 @@ L5027: lda #$40
jsr L5E78
L504B: jmp L4523
;;; ==================================================
L504E: .byte 0
L504F: .byte 0
.endproc
cmd_new_folder := cmd_new_folder_impl::start
L4F76 := cmd_new_folder_impl::L4F76 ; ???
cmd_eject:
;;; ==================================================
.proc cmd_eject
lda selected_window_index
beq L5056
L5055: rts
@ -7576,28 +7597,46 @@ L5084: ldx L5098
dec L5098
bpl L5084
jmp L4523
L5098: .byte $00
.endproc
;;; ==================================================
L5098: .byte $00
L5099: .byte $AF,$DE,$AD,$DE
L509D: .byte $18,$FB,$5C,$04,$D0,$E0
L50A3: .byte $04,$00,$00,$00,$00,$00,$00
.proc cmd_quit_impl
cmd_quit:
ldx #$03
L50AC: lda L5099,x
sta $0102,x
stack_data:
.addr $DEAF,$DEAD ; ???
quit_code:
.byte $18,$FB,$5C,$04,$D0,$E0
.proc quit_params
params: .byte 4
.byte 0
.word 0
.byte 0
.word 0
.endproc
start:
ldx #3
: lda stack_data,x
sta $0102,x ; Populate stack ???
dex
bpl L50AC
bpl :-
;; Install new quit routine
sta ALTZPOFF
lda LCBANK2
lda LCBANK2
ldx #$05
L50C0: lda L509D,x
sta $D100,x ; ???
ldx #5
: lda quit_code,x
sta SELECTOR,x
dex
bpl L50C0
bpl :-
;; Restore machine to text state
sta ALTZPOFF
lda ROMIN2
jsr SETVID
@ -7612,11 +7651,14 @@ L50C0: lda L509D,x
sta CLRALTCHAR
sta CLR80VID
sta CLR80COL
MLI_CALL $65, L50A3
MLI_CALL QUIT, quit_params
.endproc
cmd_quit := cmd_quit_impl::start
;;; ==================================================
cmd_view_by_icon:
.proc cmd_view_by_icon
ldx desktop_winid
bne L50FF
rts
@ -7718,6 +7760,10 @@ L51EC: .byte 0
L51ED: .byte 0
.byte 0
L51EF: .byte 0
.endproc
;;; ==================================================
L51F0: ldx desktop_winid
dex
sta LE6D1,x
@ -7763,14 +7809,14 @@ L5246: lda L5263,x
sta L4152
rts
;;; ==================================================
L5263: .byte 0
L5264: .byte 0
L5265: .byte 0
.byte 0
cmd_view_by_name:
;;; ==================================================
.proc cmd_view_by_name
ldx desktop_winid
bne L526D
rts
@ -7787,10 +7833,11 @@ L5276: cmp #$00
L527D: jsr L52DF
lda #$81
jmp L51F0
.endproc
;;; ==================================================
cmd_view_by_date:
.proc cmd_view_by_date
ldx desktop_winid
bne L528B
rts
@ -7807,10 +7854,11 @@ L5294: cmp #$00
L529B: jsr L52DF
lda #$82
jmp L51F0
.endproc
;;; ==================================================
cmd_view_by_size:
.proc cmd_view_by_size
ldx desktop_winid
bne L52A9
rts
@ -7827,10 +7875,11 @@ L52B2: cmp #$00
L52B9: jsr L52DF
lda #$83
jmp L51F0
.endproc
;;; ==================================================
cmd_view_by_type:
.proc cmd_view_by_type
ldx desktop_winid
bne L52C7
rts
@ -7847,6 +7896,9 @@ L52D0: cmp #$00
L52D7: jsr L52DF
lda #$84
jmp L51F0
.endproc
;;; ==================================================
L52DF: lda #$00
sta $E269
@ -7885,7 +7937,9 @@ L5334: jsr DESKTOP_COPY_FROM_BUF
L533F: .byte 0
cmd_format_disk:
;;; ==================================================
.proc cmd_format_disk
lda #dynamic_routine_format_erase
jsr load_dynamic_routine
bmi L535A
@ -7898,10 +7952,11 @@ cmd_format_disk:
L5357: jmp L4523
L535A: rts
.endproc
;;; ==================================================
cmd_erase_disk:
.proc cmd_erase_disk
lda #dynamic_routine_format_erase
jsr load_dynamic_routine
bmi L5372
@ -7912,34 +7967,39 @@ cmd_erase_disk:
jsr L4523
jsr L59A4
L5372: jmp L4523
.endproc
;;; ==================================================
cmd_get_info:
.proc cmd_get_info
jsr L8F09
jmp L4523
.endproc
;;; ==================================================
cmd_get_size:
.proc cmd_get_size
jsr L8F27
jmp L4523
.endproc
;;; ==================================================
cmd_unlock:
.proc cmd_unlock
jsr L8F0F
jmp L4523
.endproc
;;; ==================================================
cmd_lock:
.proc cmd_lock
jsr L8F0C
jmp L4523
.endproc
;;; ==================================================
cmd_rename_icon:
.proc cmd_rename_icon
jsr L8F12
pha
jsr L4523
@ -7969,7 +8029,6 @@ L53BA: inc L5426
lda selected_window_index
bne L53CD
jmp L540E
L53CD: jmp L5E78
L53D0: tax
@ -8011,13 +8070,17 @@ L5411: lda L5428,x
L5426: .byte 0
L5427: .byte 0
L5428: .res 9, 0
L5431: ldx #$07
L5431: ldx #7
L5433: cmp LEC26,x
beq L543E
dex
bpl L5433
lda #$FF
rts
.endproc
;;; ==================================================
L543E: inx
txa
@ -9231,7 +9294,7 @@ L5ECB: lda ($06),y
bpl L5ECB
pla
jsr L7054
jsr L5106
jsr cmd_view_by_icon::L5106
jsr DESKTOP_COPY_FROM_BUF
lda desktop_winid
sta bufnum
@ -14610,19 +14673,20 @@ params: .byte 1
ref_num:.byte 0
.endproc
L8E80: .byte $00
restore_flag:
.byte 0
;; Called with routine # in A
load: pha ; entry point with bit clear
lda #$00
sta L8E80
sta restore_flag
beq :+
restore:
pha
lda #$80 ; entry point with bit set
sta L8E80
sta restore_flag
: pla
asl a ; y = A * 2 (to index into word table)
@ -14651,7 +14715,7 @@ open: MLI_RELAY_CALL OPEN, open_params
beq :+
lda #$00 ; on error
ora L8E80 ; check flag
ora restore_flag ; error during restore?
jsr L48CC ; ??? reset path ???
beq open
lda #$FF ; failed
@ -15730,7 +15794,7 @@ trans: .word 0
.proc create_params3
params: .byte 7
path: .addr $1FC0
access: .byte $C3
access: .byte %11000011
type: .byte 0
auxtype:.word 0
storage:.byte 0
@ -16095,9 +16159,9 @@ L9A70: yax_call JT_MLI_RELAY, file_info_params2, GET_FILE_INFO
jmp L9A70
L9A81: lda file_info_params2::storage
cmp #$0F
cmp #ST_VOLUME_DIRECTORY
beq L9A90
cmp #$0D
cmp #ST_LINKED_DIRECTORY
beq L9A90
lda #$00
beq L9A95
@ -16117,7 +16181,7 @@ L9AAA: lda file_info_params2,y
dey
cpy #$02
bne L9AAA
lda #$C3
lda #%11000011
sta create_params2::access
lda $E05B
beq L9B23
@ -16132,9 +16196,9 @@ L9AC8: lda file_info_params2,y
cpy #$0D
bne L9AC8
lda create_params2::storage
cmp #$0F
cmp #ST_VOLUME_DIRECTORY
bne L9AE0
lda #$0D
lda #ST_LINKED_DIRECTORY
sta create_params2::storage
L9AE0: yax_call JT_MLI_RELAY, create_params2, CREATE
beq L9B23
@ -16566,7 +16630,7 @@ L9EE3: yax_call JT_MLI_RELAY, file_info_params2, GET_FILE_INFO
L9EF4: lda file_info_params2::storage
sta L9F1D
cmp #$0D
cmp #ST_LINKED_DIRECTORY
beq L9F02
lda #$00
beq L9F04
@ -16646,7 +16710,7 @@ L9FAA: yax_call JT_MLI_RELAY, file_info_params2, GET_FILE_INFO
jmp L9FAA
L9FBB: lda file_info_params2::storage
cmp #$0D
cmp #ST_LINKED_DIRECTORY
beq LA022
L9FC2: yax_call JT_MLI_RELAY, destroy_params, DESTROY
beq LA022
@ -16814,9 +16878,9 @@ LA133: yax_call JT_MLI_RELAY, file_info_params2, GET_FILE_INFO
LA144: lda file_info_params2::storage
sta LA169
cmp #$0F
cmp #ST_VOLUME_DIRECTORY
beq LA156
cmp #$0D
cmp #ST_LINKED_DIRECTORY
beq LA156
lda #$00
beq LA158
@ -16843,13 +16907,13 @@ LA179: yax_call JT_MLI_RELAY, file_info_params2, GET_FILE_INFO
jmp LA179
LA18A: lda file_info_params2::storage
cmp #$0F
cmp #ST_VOLUME_DIRECTORY
beq LA1C0
cmp #$0D
cmp #ST_LINKED_DIRECTORY
beq LA1C0
bit L918B
bpl LA19E
lda #$C3
lda #%11000011
bne LA1A0
LA19E: lda #$21
LA1A0: sta file_info_params2::access
@ -16943,9 +17007,9 @@ LA274: yax_call JT_MLI_RELAY, file_info_params2, GET_FILE_INFO
LA285: lda file_info_params2::storage
sta LA2AA
cmp #$0F
cmp #ST_VOLUME_DIRECTORY
beq LA297
cmp #$0D
cmp #ST_LINKED_DIRECTORY
beq LA297
lda #$00
beq LA299

View File

@ -83,6 +83,13 @@ FT_S16 := $B3 ; IIgs Application Program
FT_BASIC := $FC
FT_SYSTEM := $FF
;;; ------------------------------------------------------------
;;; Storage Types
ST_STANDARD_FILE := $01
ST_LINKED_DIRECTORY := $0D
ST_VOLUME_DIRECTORY := $0F
;;; ------------------------------------------------------------
;;; Macros