mirror of
https://github.com/mi57730/a2d.git
synced 2025-02-09 04:30:43 +00:00
overlay 1a WIP
This commit is contained in:
parent
8ac6630bcf
commit
04f3b9119e
@ -4,7 +4,7 @@ CAFLAGS = --target apple2enh --list-bytes 0
|
||||
CCFLAGS = --config asm.cfg
|
||||
|
||||
TARGETS = loader.built mgtk.built desktop.built invoker.built \
|
||||
ovl1.built ovl5.built ovl6.built
|
||||
ovl1.built ovl1a.built ovl5.built ovl6.built
|
||||
|
||||
.PHONY: clean all
|
||||
all: $(TARGETS)
|
||||
|
@ -24,7 +24,9 @@ The file is broken down into multiple segments:
|
||||
* segment 6: main - A$0290-$03EF, L$0160, mark $012E80 (Invoker)
|
||||
* overlays dynamically loaded for these actions:
|
||||
* disk copy - A$0800, L$0200, mark $012FE0
|
||||
* _(there's a $2F00 gap here; disk copy overlay itself loads A$1800,L$200,mark $131E0; rest is TBD)_
|
||||
* which loads - A$1800, L$0200, mark $0131E0
|
||||
* which loads - A$D000, L$2200, mark $0133E0
|
||||
* and... - A$0800, L$0B00, mark $0155E0
|
||||
* format/erase - A$0800, L$1400, mark $0160E0
|
||||
* selector - A$9000, L$1000, mark $0174E0
|
||||
* common - A$5000, L$2000, mark $0184E0 (used by selector, copy, delete)
|
||||
|
BIN
desktop/orig/DESKTOP2_ovl1a
Normal file
BIN
desktop/orig/DESKTOP2_ovl1a
Normal file
Binary file not shown.
283
desktop/ovl1a.s
Normal file
283
desktop/ovl1a.s
Normal file
@ -0,0 +1,283 @@
|
||||
|
||||
.setcpu "6502"
|
||||
|
||||
.include "apple2.inc"
|
||||
.include "../inc/apple2.inc"
|
||||
.include "../inc/auxmem.inc"
|
||||
.include "../inc/prodos.inc"
|
||||
.include "../mgtk.inc"
|
||||
.include "../desktop.inc"
|
||||
.include "../macros.inc"
|
||||
|
||||
;;; ==================================================
|
||||
;;; Overlay for Disk Copy #2
|
||||
;;; ==================================================
|
||||
|
||||
.org $1800
|
||||
.proc disk_copy_overlay2
|
||||
jmp start
|
||||
|
||||
L1A39 := $1A39
|
||||
L1A3B := $1A3B
|
||||
LA798 := $A798
|
||||
LA839 := $A839
|
||||
LA83D := $A83D
|
||||
LA8E8 := $A8E8
|
||||
LA960 := $A960
|
||||
LAA00 := $AA00
|
||||
LAA1B := $AA1B
|
||||
LAA3A := $AA3A
|
||||
LAB37 := $AB37
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
.proc open_params
|
||||
param_count: .byte 3
|
||||
pathname: .addr filename
|
||||
io_buffer: .addr $1C00
|
||||
ref_num: .byte 0
|
||||
.endproc
|
||||
filename: PASCAL_STRING "DeskTop2"
|
||||
|
||||
.proc read_params
|
||||
param_count: .byte 4
|
||||
ref_num: .byte 0
|
||||
data_buffer: .addr 0
|
||||
request_count: .word 0
|
||||
trans_count: .word 0
|
||||
.endproc
|
||||
|
||||
.proc set_mark_params
|
||||
param_count: .byte 2
|
||||
ref_num: .byte 0
|
||||
position: .faraddr $133E0
|
||||
.endproc
|
||||
|
||||
.proc close_params
|
||||
param_count: .byte 1
|
||||
ref_num: .byte 0
|
||||
.endproc
|
||||
|
||||
.byte $00,$00
|
||||
|
||||
buf1: .addr $4000
|
||||
dest1: .addr $D000
|
||||
len1: .word $2200
|
||||
|
||||
buf2: .addr $800
|
||||
len2: .word $B00
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
start: lda #$41 ; ???
|
||||
sta RAMWRTON
|
||||
sta $0100
|
||||
sta $0101
|
||||
sta RAMWRTOFF
|
||||
|
||||
;; Free up system bitmap
|
||||
ldx #BITMAP_SIZE-3
|
||||
lda #0
|
||||
L183F: sta BITMAP+1,x
|
||||
dex
|
||||
bpl L183F
|
||||
|
||||
yax_call MLI_RELAY, OPEN, open_params
|
||||
lda open_params::ref_num
|
||||
sta read_params::ref_num
|
||||
sta set_mark_params::ref_num
|
||||
|
||||
yax_call MLI_RELAY, SET_MARK, set_mark_params
|
||||
copy16 buf1, read_params::data_buffer
|
||||
copy16 len1, read_params::request_count
|
||||
yax_call MLI_RELAY, READ, read_params
|
||||
jsr copy_to_lc
|
||||
|
||||
copy16 buf2, read_params::data_buffer
|
||||
copy16 len2, read_params::request_count
|
||||
yax_call MLI_RELAY, READ, read_params
|
||||
yax_call MLI_RELAY, CLOSE, close_params
|
||||
sta ALTZPON
|
||||
lda LCBANK1
|
||||
lda LCBANK1
|
||||
|
||||
jmp MGTK_RELAY
|
||||
|
||||
;;; ==================================================
|
||||
;;; Copy first chunk to the Language Card
|
||||
|
||||
.proc copy_to_lc
|
||||
src := $6
|
||||
end := $8
|
||||
dst := $A
|
||||
|
||||
;; Bank in AUX LC
|
||||
sta ALTZPON
|
||||
lda LCBANK1
|
||||
lda LCBANK1
|
||||
txa
|
||||
asl a
|
||||
tax
|
||||
|
||||
;; Set up pointers
|
||||
lda buf1
|
||||
sta src
|
||||
clc
|
||||
adc len1
|
||||
sta end
|
||||
lda buf1+1
|
||||
sta src+1
|
||||
adc len1+1
|
||||
sta end+1
|
||||
lda dest1
|
||||
sta dst
|
||||
lda dest1+1
|
||||
sta dst+1
|
||||
|
||||
;; Do the copy
|
||||
ldy #0
|
||||
loop: lda (src),y
|
||||
sta (dst),y
|
||||
inc src
|
||||
inc dst
|
||||
lda src
|
||||
bne :+
|
||||
inc src+1
|
||||
inc dst+1
|
||||
: lda src+1
|
||||
cmp end+1
|
||||
bne loop
|
||||
lda src
|
||||
cmp end
|
||||
bne loop
|
||||
|
||||
;; Bank in ROM
|
||||
sta ALTZPOFF
|
||||
lda ROMIN2
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
.proc MLI_RELAY
|
||||
sty call
|
||||
stax params
|
||||
php
|
||||
sei
|
||||
jsr MLI
|
||||
call: .byte 0
|
||||
params: .addr 0
|
||||
plp
|
||||
and #$FF
|
||||
self: bne self ; hang if fails
|
||||
rts
|
||||
.endproc
|
||||
|
||||
;;; ==================================================
|
||||
|
||||
tax
|
||||
bne L192C
|
||||
bcc L1998
|
||||
lda $BE54
|
||||
lsr a
|
||||
bcs L1962
|
||||
L192C: jmp LA839
|
||||
|
||||
lda $BE53
|
||||
cmp #$06
|
||||
bne L192C
|
||||
jmp LA798
|
||||
|
||||
jsr LAA1B
|
||||
beq L192C
|
||||
cmp #$41
|
||||
beq L198C
|
||||
jsr LAB37
|
||||
sty $BCAD
|
||||
ldy #$13
|
||||
sty $BCAE
|
||||
ldy #$40
|
||||
sty $BE56
|
||||
jsr LA960
|
||||
bcs L1961
|
||||
lda $BE6B
|
||||
cmp #$08
|
||||
bcc L1991
|
||||
L195E: lda #$02
|
||||
sec
|
||||
L1961: rts
|
||||
|
||||
L1962: lsr a
|
||||
bcc L1987
|
||||
jsr LAA3A
|
||||
beq L192C
|
||||
dex
|
||||
lda #$82
|
||||
sta $BCA9
|
||||
ldy #$01
|
||||
jsr LAA00
|
||||
dey
|
||||
dey
|
||||
sty $0280
|
||||
lda #$03
|
||||
sta $BE56
|
||||
dex
|
||||
jsr LAA3A
|
||||
bne L192C
|
||||
bcc L1998
|
||||
L1987: jsr LAA3A
|
||||
beq L192C
|
||||
L198C: jsr LA8E8
|
||||
bcs L1961
|
||||
L1991: jsr LAA3A
|
||||
bne L192C
|
||||
bcs L1987
|
||||
L1998: lda $BE61
|
||||
beq L195E
|
||||
cmp #$08
|
||||
bcs L195E
|
||||
lda $BE62
|
||||
beq L195E
|
||||
cmp #$03
|
||||
bcs L195E
|
||||
lda $BE54
|
||||
and #$21
|
||||
lsr a
|
||||
beq L19BB
|
||||
lda $BE42
|
||||
bne L19BB
|
||||
lda #$0F
|
||||
sec
|
||||
rts
|
||||
|
||||
L19BB: bcc L19FD
|
||||
lda $BE55
|
||||
and #$04
|
||||
beq L19FD
|
||||
lda $BE56
|
||||
lsr a
|
||||
bcs L19D3
|
||||
lda $BE54
|
||||
and #$90
|
||||
beq L1A39
|
||||
bpl L19FD
|
||||
L19D3: lda $BCBD
|
||||
eor #$2F
|
||||
beq L19DF
|
||||
lda $BF9A
|
||||
beq L19F8
|
||||
L19DF: lda $BE57
|
||||
and #$04
|
||||
beq L19FD
|
||||
bcs L19F8
|
||||
lda #$00
|
||||
sta $BCBC
|
||||
sta $BCBD
|
||||
lda #$01
|
||||
ora $BE56
|
||||
sta $BE56
|
||||
L19F8: jsr LA83D
|
||||
bcs L1A3B
|
||||
L19FD: lda $BE53
|
||||
|
||||
.endproc
|
@ -31,7 +31,7 @@ function stats {
|
||||
#do_make clean
|
||||
do_make all
|
||||
|
||||
TARGETS="loader mgtk desktop invoker ovl1 ovl5 ovl6"
|
||||
TARGETS="loader mgtk desktop invoker ovl1 ovl1a ovl5 ovl6"
|
||||
|
||||
# Verify original and output match
|
||||
echo "Verifying diffs:"
|
||||
|
Loading…
x
Reference in New Issue
Block a user