mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-18 02:30:50 +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"
|
||||
|
||||
A2D := $4000
|
||||
UNKNOWN_CALL := $8E00
|
||||
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
|
||||
.include "../inc/apple2.inc"
|
||||
.include "../inc/prodos.inc"
|
||||
|
||||
ora ($20,x)
|
||||
.byte $02
|
||||
L0296: brk
|
||||
.byte $03
|
||||
L0298: .byte $80
|
||||
L0299: .byte $02
|
||||
brk
|
||||
L029B: php
|
||||
L029C: ora ($04,x)
|
||||
L029E: brk
|
||||
L029F: brk
|
||||
L02A0: jsr L9F00
|
||||
brk
|
||||
brk
|
||||
L02A5: ora ($00,x)
|
||||
asl a
|
||||
.byte $80
|
||||
.byte $02
|
||||
brk
|
||||
L02AB: brk
|
||||
L02AC: brk
|
||||
L02AD: brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
.byte $0C
|
||||
.byte $42
|
||||
eor ($53,x)
|
||||
eor #$43
|
||||
rol $5953
|
||||
.byte $53
|
||||
.byte $54
|
||||
eor $4D
|
||||
.byte $04
|
||||
inc $0280
|
||||
brk
|
||||
brk
|
||||
brk
|
||||
L02D0: jsr MLI
|
||||
dec $93
|
||||
.byte $02
|
||||
;;; Used to invoke programs from selector menu
|
||||
|
||||
PREFIX := $0220
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
.org $290
|
||||
start:
|
||||
jmp begin
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
.proc set_prefix_params
|
||||
params: .byte 1
|
||||
path: .addr PREFIX
|
||||
.endproc
|
||||
|
||||
L0296: .byte 0
|
||||
|
||||
.proc open_params
|
||||
params: .byte 3
|
||||
path: .addr $280
|
||||
buffer: .addr $800
|
||||
ref_num:.byte 1
|
||||
.endproc
|
||||
|
||||
.proc read_params
|
||||
params: .byte 4
|
||||
ref_num:.byte 0
|
||||
buffer: .addr $2000
|
||||
request:.word $9F00
|
||||
trans: .word 0
|
||||
.endproc
|
||||
|
||||
.proc close_params
|
||||
params: .byte 1
|
||||
ref_nun:.byte 0
|
||||
.endproc
|
||||
|
||||
.proc get_info_params
|
||||
params: .byte $A
|
||||
path: .addr $0280
|
||||
access: .byte 0
|
||||
type: .byte 0
|
||||
auxtype:.word 0
|
||||
storage:.byte 0
|
||||
blocks: .word 0
|
||||
mod_date: .word 0
|
||||
mod_time: .word 0
|
||||
create_date: .word 0
|
||||
create_time: .word 0
|
||||
.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
|
||||
pla
|
||||
pla
|
||||
@ -97,151 +80,111 @@ L02D0: jsr MLI
|
||||
|
||||
L02DD: rts
|
||||
|
||||
L02DE: jsr MLI
|
||||
iny
|
||||
.byte $97
|
||||
.byte $02
|
||||
L02DE: MLI_CALL OPEN, open_params
|
||||
rts
|
||||
|
||||
L02E5: lda $C082
|
||||
lda #$00
|
||||
sta L03B8
|
||||
lda #$20
|
||||
sta L03B9
|
||||
begin: lda ROMIN2
|
||||
lda #<$0000
|
||||
sta jmp_addr
|
||||
lda #>$2000
|
||||
sta jmp_addr+1
|
||||
ldx #$16
|
||||
lda #$00
|
||||
L02F6: sta $BF58,x
|
||||
: sta $BF58,x
|
||||
dex
|
||||
bne L02F6
|
||||
jsr L02D0
|
||||
lda $0220
|
||||
bne :-
|
||||
jsr bail
|
||||
lda PREFIX
|
||||
sta L0296
|
||||
jsr MLI
|
||||
cpy $A7
|
||||
.byte $02
|
||||
MLI_CALL GET_FILE_INFO, get_info_params
|
||||
beq L0310
|
||||
jmp L03CB
|
||||
|
||||
L0310: lda L02AB
|
||||
cmp #$B3
|
||||
L0310: lda get_info_params::type
|
||||
cmp #FT_S16
|
||||
bne L031D
|
||||
jsr L03C0
|
||||
jmp L03BA
|
||||
|
||||
L031D: cmp #$06
|
||||
L031D: cmp #FT_BINARY
|
||||
bne L0345
|
||||
lda L02AC
|
||||
sta L03B8
|
||||
sta L029F
|
||||
lda L02AD
|
||||
sta L03B9
|
||||
sta L02A0
|
||||
lda get_info_params::auxtype
|
||||
sta jmp_addr
|
||||
sta read_params::buffer
|
||||
lda get_info_params::auxtype+1
|
||||
sta jmp_addr+1
|
||||
sta read_params::buffer+1
|
||||
cmp #$0C
|
||||
bcs L033E
|
||||
lda #$BB
|
||||
sta L029B
|
||||
sta open_params::buffer+1
|
||||
bne L037D
|
||||
L033E: lda #$08
|
||||
sta L029B
|
||||
sta open_params::buffer+1
|
||||
bne L037D
|
||||
L0345: cmp #$FC
|
||||
|
||||
L0345: cmp #FT_BASIC
|
||||
bne L037D
|
||||
lda #$BC
|
||||
sta L0298
|
||||
lda #$02
|
||||
sta L0299
|
||||
lda #<bs_path
|
||||
sta open_params::path
|
||||
lda #>bs_path
|
||||
sta open_params::path+1
|
||||
L0353: jsr L02DE
|
||||
beq L0374
|
||||
ldy $0220
|
||||
L035B: lda $0220,y
|
||||
ldy PREFIX
|
||||
L035B: lda PREFIX,y
|
||||
cmp #$2F
|
||||
beq L036A
|
||||
dey
|
||||
cpy #$01
|
||||
cpy #1
|
||||
bne L035B
|
||||
jmp L03CB
|
||||
|
||||
L036A: dey
|
||||
sty $0220
|
||||
jsr L02D0
|
||||
sty PREFIX
|
||||
jsr bail
|
||||
jmp L0353
|
||||
|
||||
L0374: lda L0296
|
||||
sta $0220
|
||||
sta PREFIX
|
||||
jmp L0382
|
||||
|
||||
L037D: jsr L02DE
|
||||
bne L03CB
|
||||
L0382: lda L029C
|
||||
sta L029E
|
||||
jsr MLI
|
||||
dex
|
||||
sta $D002,x
|
||||
.byte $3B
|
||||
jsr MLI
|
||||
cpy L02A5
|
||||
L0382: lda open_params::ref_num
|
||||
sta read_params::ref_num
|
||||
MLI_CALL READ, read_params
|
||||
bne L03CB
|
||||
lda L02AB
|
||||
cmp #$FC
|
||||
MLI_CALL CLOSE, close_params
|
||||
bne L03CB
|
||||
lda get_info_params::type
|
||||
cmp #FT_BASIC
|
||||
bne L03AE
|
||||
jsr L02D0
|
||||
jsr bail
|
||||
ldy $0280
|
||||
L03A5: lda $0280,y
|
||||
: lda $0280,y
|
||||
sta $2006,y
|
||||
dey
|
||||
bpl L03A5
|
||||
bpl :-
|
||||
L03AE: lda #$03
|
||||
pha
|
||||
lda #$B9
|
||||
pha
|
||||
jsr L03C0
|
||||
.byte $4C
|
||||
L03B8: brk
|
||||
L03B9: .byte $20
|
||||
L03BA: jsr MLI
|
||||
adc $C9
|
||||
.byte $02
|
||||
L03C0: lda #$01
|
||||
sta $BF6F
|
||||
lda #$CF
|
||||
sta $BF58
|
||||
|
||||
jmp_addr := *+1
|
||||
jmp $2000
|
||||
|
||||
L03BA: MLI_CALL QUIT, quit_params
|
||||
|
||||
;; Initialize system bitmap
|
||||
L03C0: lda #$01 ; ProDOS global page
|
||||
sta BITMAP+BITMAP_SIZE-1
|
||||
lda #%11001111 ; ZP, Stack, Text Page 1
|
||||
sta BITMAP
|
||||
rts
|
||||
|
||||
L03CB: rts
|
||||
|
||||
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
|
||||
brk
|
||||
brk
|
||||
;; Pad to $160 bytes
|
||||
.res $160 - (* - start), 0
|
||||
|
@ -53,7 +53,8 @@ FT_BAD := $01
|
||||
FT_TEXT := $04
|
||||
FT_BINARY := $06
|
||||
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_SYSTEM := $FF
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user