mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-20 02:29:11 +00:00
DeskTop S6: Selection launcher
This commit is contained in:
parent
69cd2ded36
commit
32c4dcc540
313
desktop/s6.s
313
desktop/s6.s
@ -1,95 +1,78 @@
|
|||||||
.org $290
|
|
||||||
; da65 V2.16 - Git f5e9b401
|
|
||||||
; Created: 2018-01-05 09:39:35
|
|
||||||
; Input file: orig/DESKTOP2_s6
|
|
||||||
; Page: 1
|
|
||||||
|
|
||||||
|
|
||||||
.setcpu "6502"
|
.setcpu "6502"
|
||||||
|
|
||||||
A2D := $4000
|
.include "../inc/apple2.inc"
|
||||||
UNKNOWN_CALL := $8E00
|
.include "../inc/prodos.inc"
|
||||||
L9F00 := $9F00
|
|
||||||
MLI := $BF00
|
|
||||||
RAMRDOFF := $C002
|
|
||||||
RAMRDON := $C003
|
|
||||||
RAMWRTOFF := $C004
|
|
||||||
RAMWRTON := $C005
|
|
||||||
ALTZPOFF := $C008
|
|
||||||
ALTZPON := $C009
|
|
||||||
LCBANK1 := $C08B
|
|
||||||
AUXMOVE := $C311
|
|
||||||
XFER := $C314
|
|
||||||
A2D_RELAY := $D000
|
|
||||||
DESKTOP_RELAY := $D040
|
|
||||||
FSUB := $E7A7
|
|
||||||
FADD := $E7BE
|
|
||||||
FMULT := $E97F
|
|
||||||
FDIV := $EA66
|
|
||||||
ROUND := $EB2B
|
|
||||||
FLOAT := $EB93
|
|
||||||
FIN := $EC4A
|
|
||||||
FOUT := $ED34
|
|
||||||
INIT := $FB2F
|
|
||||||
BELL1 := $FBDD
|
|
||||||
HOME := $FC58
|
|
||||||
COUT := $FDED
|
|
||||||
SETKBD := $FE89
|
|
||||||
SETVID := $FE93
|
|
||||||
jmp L02E5
|
|
||||||
|
|
||||||
ora ($20,x)
|
;;; Used to invoke programs from selector menu
|
||||||
.byte $02
|
|
||||||
L0296: brk
|
PREFIX := $0220
|
||||||
.byte $03
|
|
||||||
L0298: .byte $80
|
;;; ==================================================
|
||||||
L0299: .byte $02
|
|
||||||
brk
|
.org $290
|
||||||
L029B: php
|
start:
|
||||||
L029C: ora ($04,x)
|
jmp begin
|
||||||
L029E: brk
|
|
||||||
L029F: brk
|
;;; ==================================================
|
||||||
L02A0: jsr L9F00
|
|
||||||
brk
|
.proc set_prefix_params
|
||||||
brk
|
params: .byte 1
|
||||||
L02A5: ora ($00,x)
|
path: .addr PREFIX
|
||||||
asl a
|
.endproc
|
||||||
.byte $80
|
|
||||||
.byte $02
|
L0296: .byte 0
|
||||||
brk
|
|
||||||
L02AB: brk
|
.proc open_params
|
||||||
L02AC: brk
|
params: .byte 3
|
||||||
L02AD: brk
|
path: .addr $280
|
||||||
brk
|
buffer: .addr $800
|
||||||
brk
|
ref_num:.byte 1
|
||||||
brk
|
.endproc
|
||||||
brk
|
|
||||||
brk
|
.proc read_params
|
||||||
brk
|
params: .byte 4
|
||||||
brk
|
ref_num:.byte 0
|
||||||
brk
|
buffer: .addr $2000
|
||||||
brk
|
request:.word $9F00
|
||||||
brk
|
trans: .word 0
|
||||||
brk
|
.endproc
|
||||||
brk
|
|
||||||
brk
|
.proc close_params
|
||||||
brk
|
params: .byte 1
|
||||||
.byte $0C
|
ref_nun:.byte 0
|
||||||
.byte $42
|
.endproc
|
||||||
eor ($53,x)
|
|
||||||
eor #$43
|
.proc get_info_params
|
||||||
rol $5953
|
params: .byte $A
|
||||||
.byte $53
|
path: .addr $0280
|
||||||
.byte $54
|
access: .byte 0
|
||||||
eor $4D
|
type: .byte 0
|
||||||
.byte $04
|
auxtype:.word 0
|
||||||
inc $0280
|
storage:.byte 0
|
||||||
brk
|
blocks: .word 0
|
||||||
brk
|
mod_date: .word 0
|
||||||
brk
|
mod_time: .word 0
|
||||||
L02D0: jsr MLI
|
create_date: .word 0
|
||||||
dec $93
|
create_time: .word 0
|
||||||
.byte $02
|
.endproc
|
||||||
|
|
||||||
|
.res 3
|
||||||
|
|
||||||
|
bs_path:
|
||||||
|
PASCAL_STRING "BASIC.SYSTEM"
|
||||||
|
|
||||||
|
.proc quit_params
|
||||||
|
params: .byte 4
|
||||||
|
.byte $EE ; nonstandard ???
|
||||||
|
.word $0280 ; nonstandard ???
|
||||||
|
.byte 0
|
||||||
|
.word 0
|
||||||
|
.endproc
|
||||||
|
|
||||||
|
;;; ==================================================
|
||||||
|
|
||||||
|
bail: MLI_CALL SET_PREFIX, set_prefix_params
|
||||||
beq L02DD
|
beq L02DD
|
||||||
pla
|
pla
|
||||||
pla
|
pla
|
||||||
@ -97,151 +80,111 @@ L02D0: jsr MLI
|
|||||||
|
|
||||||
L02DD: rts
|
L02DD: rts
|
||||||
|
|
||||||
L02DE: jsr MLI
|
L02DE: MLI_CALL OPEN, open_params
|
||||||
iny
|
|
||||||
.byte $97
|
|
||||||
.byte $02
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L02E5: lda $C082
|
begin: lda ROMIN2
|
||||||
lda #$00
|
lda #<$0000
|
||||||
sta L03B8
|
sta jmp_addr
|
||||||
lda #$20
|
lda #>$2000
|
||||||
sta L03B9
|
sta jmp_addr+1
|
||||||
ldx #$16
|
ldx #$16
|
||||||
lda #$00
|
lda #$00
|
||||||
L02F6: sta $BF58,x
|
: sta $BF58,x
|
||||||
dex
|
dex
|
||||||
bne L02F6
|
bne :-
|
||||||
jsr L02D0
|
jsr bail
|
||||||
lda $0220
|
lda PREFIX
|
||||||
sta L0296
|
sta L0296
|
||||||
jsr MLI
|
MLI_CALL GET_FILE_INFO, get_info_params
|
||||||
cpy $A7
|
|
||||||
.byte $02
|
|
||||||
beq L0310
|
beq L0310
|
||||||
jmp L03CB
|
jmp L03CB
|
||||||
|
|
||||||
L0310: lda L02AB
|
L0310: lda get_info_params::type
|
||||||
cmp #$B3
|
cmp #FT_S16
|
||||||
bne L031D
|
bne L031D
|
||||||
jsr L03C0
|
jsr L03C0
|
||||||
jmp L03BA
|
jmp L03BA
|
||||||
|
|
||||||
L031D: cmp #$06
|
L031D: cmp #FT_BINARY
|
||||||
bne L0345
|
bne L0345
|
||||||
lda L02AC
|
lda get_info_params::auxtype
|
||||||
sta L03B8
|
sta jmp_addr
|
||||||
sta L029F
|
sta read_params::buffer
|
||||||
lda L02AD
|
lda get_info_params::auxtype+1
|
||||||
sta L03B9
|
sta jmp_addr+1
|
||||||
sta L02A0
|
sta read_params::buffer+1
|
||||||
cmp #$0C
|
cmp #$0C
|
||||||
bcs L033E
|
bcs L033E
|
||||||
lda #$BB
|
lda #$BB
|
||||||
sta L029B
|
sta open_params::buffer+1
|
||||||
bne L037D
|
bne L037D
|
||||||
L033E: lda #$08
|
L033E: lda #$08
|
||||||
sta L029B
|
sta open_params::buffer+1
|
||||||
bne L037D
|
bne L037D
|
||||||
L0345: cmp #$FC
|
|
||||||
|
L0345: cmp #FT_BASIC
|
||||||
bne L037D
|
bne L037D
|
||||||
lda #$BC
|
lda #<bs_path
|
||||||
sta L0298
|
sta open_params::path
|
||||||
lda #$02
|
lda #>bs_path
|
||||||
sta L0299
|
sta open_params::path+1
|
||||||
L0353: jsr L02DE
|
L0353: jsr L02DE
|
||||||
beq L0374
|
beq L0374
|
||||||
ldy $0220
|
ldy PREFIX
|
||||||
L035B: lda $0220,y
|
L035B: lda PREFIX,y
|
||||||
cmp #$2F
|
cmp #$2F
|
||||||
beq L036A
|
beq L036A
|
||||||
dey
|
dey
|
||||||
cpy #$01
|
cpy #1
|
||||||
bne L035B
|
bne L035B
|
||||||
jmp L03CB
|
jmp L03CB
|
||||||
|
|
||||||
L036A: dey
|
L036A: dey
|
||||||
sty $0220
|
sty PREFIX
|
||||||
jsr L02D0
|
jsr bail
|
||||||
jmp L0353
|
jmp L0353
|
||||||
|
|
||||||
L0374: lda L0296
|
L0374: lda L0296
|
||||||
sta $0220
|
sta PREFIX
|
||||||
jmp L0382
|
jmp L0382
|
||||||
|
|
||||||
L037D: jsr L02DE
|
L037D: jsr L02DE
|
||||||
bne L03CB
|
bne L03CB
|
||||||
L0382: lda L029C
|
L0382: lda open_params::ref_num
|
||||||
sta L029E
|
sta read_params::ref_num
|
||||||
jsr MLI
|
MLI_CALL READ, read_params
|
||||||
dex
|
|
||||||
sta $D002,x
|
|
||||||
.byte $3B
|
|
||||||
jsr MLI
|
|
||||||
cpy L02A5
|
|
||||||
bne L03CB
|
bne L03CB
|
||||||
lda L02AB
|
MLI_CALL CLOSE, close_params
|
||||||
cmp #$FC
|
bne L03CB
|
||||||
|
lda get_info_params::type
|
||||||
|
cmp #FT_BASIC
|
||||||
bne L03AE
|
bne L03AE
|
||||||
jsr L02D0
|
jsr bail
|
||||||
ldy $0280
|
ldy $0280
|
||||||
L03A5: lda $0280,y
|
: lda $0280,y
|
||||||
sta $2006,y
|
sta $2006,y
|
||||||
dey
|
dey
|
||||||
bpl L03A5
|
bpl :-
|
||||||
L03AE: lda #$03
|
L03AE: lda #$03
|
||||||
pha
|
pha
|
||||||
lda #$B9
|
lda #$B9
|
||||||
pha
|
pha
|
||||||
jsr L03C0
|
jsr L03C0
|
||||||
.byte $4C
|
|
||||||
L03B8: brk
|
jmp_addr := *+1
|
||||||
L03B9: .byte $20
|
jmp $2000
|
||||||
L03BA: jsr MLI
|
|
||||||
adc $C9
|
L03BA: MLI_CALL QUIT, quit_params
|
||||||
.byte $02
|
|
||||||
L03C0: lda #$01
|
;; Initialize system bitmap
|
||||||
sta $BF6F
|
L03C0: lda #$01 ; ProDOS global page
|
||||||
lda #$CF
|
sta BITMAP+BITMAP_SIZE-1
|
||||||
sta $BF58
|
lda #%11001111 ; ZP, Stack, Text Page 1
|
||||||
|
sta BITMAP
|
||||||
rts
|
rts
|
||||||
|
|
||||||
L03CB: rts
|
L03CB: rts
|
||||||
|
|
||||||
brk
|
;; Pad to $160 bytes
|
||||||
brk
|
.res $160 - (* - start), 0
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
brk
|
|
||||||
|
@ -53,7 +53,8 @@ FT_BAD := $01
|
|||||||
FT_TEXT := $04
|
FT_TEXT := $04
|
||||||
FT_BINARY := $06
|
FT_BINARY := $06
|
||||||
FT_DIRECTORY := $0F
|
FT_DIRECTORY := $0F
|
||||||
FT_SRC := $B0 ; IIgs system type; re-used?
|
FT_SRC := $B0 ; IIgs system type; re-used?
|
||||||
|
FT_S16 := $B3 ; IIgs Application Program
|
||||||
FT_BASIC := $FC
|
FT_BASIC := $FC
|
||||||
FT_SYSTEM := $FF
|
FT_SYSTEM := $FF
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user