DeskTop S6: Selection launcher

This commit is contained in:
Joshua Bell 2018-01-05 11:16:47 -08:00
parent 69cd2ded36
commit 32c4dcc540
2 changed files with 130 additions and 186 deletions

View File

@ -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

View File

@ -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