mirror of
https://github.com/a2-4am/4cade.git
synced 2025-04-07 16:39:56 +00:00
working 128K check, new covers
This commit is contained in:
parent
b03ac885e4
commit
7cc325e35b
15
Makefile
15
Makefile
@ -27,16 +27,17 @@ dsk: md asm
|
||||
cp res/_FileInformation.txt build/
|
||||
$(CADIUS) ADDFILE build/"$(DISK)" "/${VOLUME}/" "res/PRODOS" >/dev/null
|
||||
$(CADIUS) ADDFILE build/"$(DISK)" "/${VOLUME}/" "build/LAUNCHER.SYSTEM" >/dev/null
|
||||
$(CADIUS) ADDFILE build/"$(DISK)" "/${VOLUME}/" "res/games.conf" >/dev/null
|
||||
$(CADIUS) ADDFILE build/"$(DISK)" "/${VOLUME}/" "res/COVER" >/dev/null
|
||||
$(CADIUS) ADDFILE build/"$(DISK)" "/${VOLUME}/" "res/COVER.A2FC" >/dev/null
|
||||
$(CADIUS) CREATEFOLDER build/"$(DISK)" "/${VOLUME}/X/" >/dev/null
|
||||
bin/do2po.py res/dsk/ build/po/
|
||||
rsync -a res/dsk/*.po build/po/
|
||||
bin/extract.py build/po/ | sh
|
||||
rm -f build/X/**/.DS_Store
|
||||
rm -f build/X/**/PRODOS
|
||||
rm -f build/X/**/LOADER.SYSTEM
|
||||
$(CADIUS) ADDFOLDER build/"$(DISK)" "/${VOLUME}/X" "build/X"
|
||||
# bin/do2po.py res/dsk/ build/po/
|
||||
# rsync -a res/dsk/*.po build/po/
|
||||
# bin/extract.py build/po/ | sh >/dev/null
|
||||
# rm -f build/X/**/.DS_Store
|
||||
# rm -f build/X/**/PRODOS
|
||||
# rm -f build/X/**/LOADER.SYSTEM
|
||||
# $(CADIUS) ADDFOLDER build/"$(DISK)" "/${VOLUME}/X" "build/X" >/dev/null
|
||||
|
||||
artwork: dsk
|
||||
# $(CADIUS) ADDFOLDER build/"$(DISK)" "/${VOLUME}/ARTWORK" "res/artwork"
|
||||
|
BIN
res/COVER.A2FC
BIN
res/COVER.A2FC
Binary file not shown.
@ -1,4 +1,4 @@
|
||||
PRODOS=Type(FF),AuxType(0000),Access(C3)
|
||||
LAUNCHER.SYSTEM=Type(FF),AuxType(2000),Access(C3)
|
||||
COVER=Type(06),AuxType(4000),Access(C3)
|
||||
COVER=Type(06),AuxType(2000),Access(C3)
|
||||
COVER.A2FC=Type(06),AuxType(2000),Access(C3)
|
||||
|
BIN
res/attic/COVER
Normal file
BIN
res/attic/COVER
Normal file
Binary file not shown.
BIN
res/attic/COVER.A2FC
Normal file
BIN
res/attic/COVER.A2FC
Normal file
Binary file not shown.
134
src/4cade.a
134
src/4cade.a
@ -2,63 +2,99 @@
|
||||
!to "build/LAUNCHER.SYSTEM",plain
|
||||
*=$2000
|
||||
|
||||
jmp Start
|
||||
|
||||
!source "src/constants.a"
|
||||
!source "src/macros.a"
|
||||
|
||||
jsr DisableAccelerator ; set to 1 MHz
|
||||
jsr Has128K ; check for 128K (64K is OK, we just filter out some games)
|
||||
ror MachineStatus
|
||||
jsr HasJoystick ; check for joystick (keyboard-only is OK, we just filter out some games)
|
||||
ror MachineStatus
|
||||
|
||||
lda LCBANK1WRITE ; read ROM / write LC bank 1
|
||||
lda LCBANK1WRITE
|
||||
ldx #$00
|
||||
FM lda FirstMover,x
|
||||
sta $D000,x
|
||||
inx
|
||||
bne FM
|
||||
; inc FM+2
|
||||
; inc FM+5
|
||||
; lda FM+5
|
||||
; cmp #>LastMover
|
||||
; bcc FM
|
||||
|
||||
jsr init ; initialize ProRWTS2 (bye bye ProDOS)
|
||||
lda LCBANK1 ; read/write LC bank 1
|
||||
lda LCBANK1
|
||||
jmp Start
|
||||
|
||||
!source "src/memcheck.a"
|
||||
!source "src/joystick.a"
|
||||
!source "src/normfast.a"
|
||||
!source "src/prorwts2.a"
|
||||
|
||||
!zone {
|
||||
FirstMover
|
||||
!pseudopc $D000 {
|
||||
!zone
|
||||
Start
|
||||
jsr $FE89
|
||||
jsr $FE93
|
||||
jsr $FB2F
|
||||
jsr $FC58
|
||||
jsr Has128K
|
||||
bmi @found128K
|
||||
ldy #9
|
||||
- lda @s_needs128K,y
|
||||
sta $400,y
|
||||
dey
|
||||
bpl -
|
||||
@hang bmi @hang
|
||||
@s_needs128K
|
||||
!text "NEEDS 128K"
|
||||
@found128K
|
||||
jsr DisableAccelerator
|
||||
jsr HasJoystick
|
||||
bcc @hang
|
||||
ldy #10
|
||||
- lda @s_nojoystick,y
|
||||
sta $400,y
|
||||
dey
|
||||
bpl -
|
||||
bmi @hang
|
||||
@s_nojoystick
|
||||
!text "NO JOYSTICK"
|
||||
}
|
||||
lda #$00 ; read first $2000 bytes
|
||||
sta sizelo
|
||||
lda #$20
|
||||
sta sizehi
|
||||
lda #0 ; 0 = read into main memory
|
||||
sta auxreq
|
||||
lda #cmdread ; read (instead of write)
|
||||
sta reqcmd
|
||||
bit MachineStatus
|
||||
bvs @ShowCover128K
|
||||
lda #<cover64 ; pointer to length-prefixed filename
|
||||
sta namlo
|
||||
lda #>cover64
|
||||
sta namhi
|
||||
jsr hddopendir ; call ProRWTS2
|
||||
clc
|
||||
bcc @Show
|
||||
@ShowCover128K
|
||||
inc auxreq ; 1 = read into aux memory
|
||||
lda #<cover128 ; pointer to length-prefixed filename
|
||||
sta namlo
|
||||
lda #>cover128
|
||||
sta namhi
|
||||
jsr hddopendir ; call ProRWTS2
|
||||
lda #$20 ; read next $2000 bytes
|
||||
sta sizehi
|
||||
dec auxreq ; 0 = read into main memory
|
||||
jsr hddrdwrpart ; call ProRWTS2
|
||||
|
||||
; jsr init ; initialize ProRWTS2
|
||||
; lda $C08B
|
||||
; lda $C08B
|
||||
; lda #<cover
|
||||
; sta namlo
|
||||
; lda #>cover
|
||||
; sta namhi
|
||||
; lda #0
|
||||
; sta sizelo
|
||||
; lda #$20
|
||||
; sta sizehi
|
||||
; jsr hddopendir
|
||||
; bit $C055
|
||||
; bit $C052
|
||||
; bit $C057
|
||||
; bit $C050
|
||||
;cover !byte cover_e-cover_b
|
||||
;cover_b !text "COVER"
|
||||
;cover_e
|
||||
sta $C000 ; display double hi-res page 1
|
||||
sta $C00D
|
||||
sta $C05E
|
||||
sta $C001
|
||||
@Show
|
||||
sta $C057
|
||||
sta $C052
|
||||
sta $C054
|
||||
sta $C050
|
||||
|
||||
bit $C010
|
||||
- lda $C000
|
||||
bpl -
|
||||
bit $C010
|
||||
brk
|
||||
|
||||
cover64
|
||||
!byte cover64_e-cover64_b
|
||||
cover64_b
|
||||
!text "COVER"
|
||||
cover64_e
|
||||
cover128
|
||||
!byte cover128_e-cover128_b
|
||||
cover128_b
|
||||
!text "COVER.A2FC"
|
||||
cover128_e
|
||||
}
|
||||
LastMover
|
||||
|
||||
;LoadDHGR
|
||||
; sta $C000
|
||||
|
@ -16,8 +16,10 @@ SLOT3STATUS = $C017 ; read high bit only
|
||||
|
||||
LCBANK2READ = $C080 ; read once to R RAM bank 2 / no write
|
||||
ROMIN = $C081 ; read twice to R ROM / W RAM bank 2
|
||||
LCBANK2 = $C083 ; read twice to R/W RAM bank 2
|
||||
ROMONLY = $C082 ; read once to R ROM / no write
|
||||
;LCBANK2 = $C083 ; read twice to R/W RAM bank 2
|
||||
LCBANK1READ = $C088 ; read once to R RAM bank 1 / no write
|
||||
LCBANK1WRITE = $C089 ; read twice to R ROM / W RAM bank 1
|
||||
LCBANK1 = $C08B ; read twice to R/W RAM bank 1
|
||||
|
||||
; ROM
|
||||
@ -29,3 +31,5 @@ PTR = $02
|
||||
SRC = $04
|
||||
DEST = $06
|
||||
SAVE = $08
|
||||
MachineStatus =$FF ; bit 7 = 1 if machine has joystick
|
||||
; bit 6 = 1 if machine has 128K
|
||||
|
@ -3,8 +3,8 @@
|
||||
; Checks whether computer has joystick connected
|
||||
;
|
||||
; in: none
|
||||
; out: C clear if joystick found
|
||||
; C set if no joystick found
|
||||
; out: C set if joystick found
|
||||
; C clear if no joystick found
|
||||
; other flags clobbered
|
||||
; A,X clobbered
|
||||
; Y preserved
|
||||
@ -13,28 +13,30 @@
|
||||
; (c) 1989 Broderbund Software
|
||||
; https://github.com/jmechner/Prince-of-Persia-Apple-II/blob/master/01%20POP%20Source/Source/GRAFIX.S#L1225
|
||||
;------------------------------------------------------------------------------
|
||||
!zone {
|
||||
HasJoystick
|
||||
lda #0
|
||||
sta joyX
|
||||
sta joyY
|
||||
sta @joyX
|
||||
sta @joyY
|
||||
lda $C070 ; reset analog input timers
|
||||
@loop ldx #1
|
||||
@1 lda $C064,x ; check timer input
|
||||
bpl @beat
|
||||
inc joyX,x ; still high, increment counter
|
||||
inc @joyX,x ; still high, increment counter
|
||||
@nextpdl dex
|
||||
bpl @1
|
||||
lda $C064
|
||||
ora $C065
|
||||
bpl @rts ; both inputs low, we're done
|
||||
lda joyX
|
||||
ora joyY
|
||||
bpl @yes ; both inputs low, we're done
|
||||
lda @joyX
|
||||
ora @joyY
|
||||
bpl @loop ; do it again
|
||||
sec
|
||||
@no clc
|
||||
+HIDE_NEXT_BYTE
|
||||
@rts clc
|
||||
@yes sec
|
||||
rts
|
||||
@beat nop
|
||||
bpl @nextpdl ; kill time
|
||||
joyX !byte 0
|
||||
joyY !byte 0
|
||||
@joyX !byte 0
|
||||
@joyY !byte 0
|
||||
}
|
||||
|
141
src/memcheck.a
141
src/memcheck.a
@ -1,121 +1,52 @@
|
||||
Has128KStatus =$FF ; [byte] set by Has128K
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Has128K
|
||||
; Checks whether computer has auxiliary memory (i.e. 128K)
|
||||
; Checks whether computer has functioning auxiliary memory (128K)
|
||||
;
|
||||
; in: none
|
||||
; out: zero page $FF has
|
||||
; $00 = not a //e
|
||||
; $20 = //e but no 80-col card
|
||||
; $40 = 80-col card but no aux mem
|
||||
; $80 = aux mem detected (yay!)
|
||||
; all other flags clobbered
|
||||
; all registers clobbered
|
||||
; zero page $1A-$1D clobbered
|
||||
; in: none
|
||||
; out: C set if 128K detected
|
||||
; C clear if 128K not detected
|
||||
; all other flags and registers clobbered
|
||||
; zp $80-$9F clobbered
|
||||
; ROM in memory (not LC RAM bank)
|
||||
;
|
||||
; original was AUX.MEM.CHECK from "Extra K"
|
||||
; (c) 1986 Beagle Bros
|
||||
; written by Alan Bird and Mark Simonsen, 1986-03-28
|
||||
; adapted from "Prince of Persia" by Jordan Mechner
|
||||
; (c) 1989 Broderbund Software
|
||||
; https://github.com/jmechner/Prince-of-Persia-Apple-II/blob/master/01%20POP%20Source/Source/BOOT.S#L119
|
||||
;------------------------------------------------------------------------------
|
||||
!zone {
|
||||
Has128K
|
||||
php
|
||||
sei
|
||||
lda $E000 ; store values from language card
|
||||
sta $1A ; (used later to determine which
|
||||
lda $D000 ; RAM bank is active and reset it)
|
||||
sta $1B
|
||||
lda $D400
|
||||
sta $1C
|
||||
lda $D800
|
||||
sta $1D
|
||||
lda ROMIN
|
||||
lda ROMIN
|
||||
sta ROMONLY ; need ROM for machine ID byte
|
||||
lda MACHINEID
|
||||
cmp #$06
|
||||
bne @noiie
|
||||
cmp #6
|
||||
bne @no ; earlier than //e -> no 128K
|
||||
lda SLOT3STATUS
|
||||
bmi @no80col
|
||||
lda AUXMEMSTATUS
|
||||
bmi @yesauxmem
|
||||
lda AUXZPSTATUS
|
||||
bmi @yesauxmem
|
||||
ldy #$28
|
||||
- ldx @checker,Y
|
||||
lda $100,Y
|
||||
sta @checker,Y
|
||||
txa
|
||||
sta $100,Y
|
||||
dey
|
||||
bmi @no ; no 80-column card -> no 128K
|
||||
ldx #@checklen
|
||||
- lda @checker,x
|
||||
sta $80,x
|
||||
dex
|
||||
bpl -
|
||||
jmp $100
|
||||
@postcheck
|
||||
ldy #$28
|
||||
- lda @checker,Y
|
||||
sta $100,Y
|
||||
dey
|
||||
bpl -
|
||||
bcs @noauxmem
|
||||
@yesauxmem
|
||||
lda #$80
|
||||
+HIDE_NEXT_2_BYTES
|
||||
@noauxmem
|
||||
lda #$40
|
||||
+HIDE_NEXT_2_BYTES
|
||||
@no80col
|
||||
lda #$20
|
||||
+HIDE_NEXT_2_BYTES
|
||||
@noiie
|
||||
lda #$00
|
||||
sta Has128KStatus
|
||||
lda $E000
|
||||
cmp $1A
|
||||
bne @tryRAMbank1
|
||||
lda $D000
|
||||
cmp $1B
|
||||
bne @tryRAMbank1
|
||||
lda $D400
|
||||
cmp $1C
|
||||
bne @tryRAMbank1
|
||||
lda $D800
|
||||
cmp $1D
|
||||
beq @done
|
||||
@tryRAMbank1
|
||||
lda LCBANK1READ
|
||||
lda $E000
|
||||
cmp $1A
|
||||
bne @tryRAMbank2
|
||||
lda $D000
|
||||
cmp $1B
|
||||
bne @tryRAMbank2
|
||||
lda $D400
|
||||
cmp $1C
|
||||
bne @tryRAMbank2
|
||||
lda $D800
|
||||
cmp $1D
|
||||
beq @done
|
||||
@tryRAMbank2
|
||||
lda LCBANK2READ
|
||||
@done
|
||||
plp
|
||||
lda Has128KStatus
|
||||
rts
|
||||
jmp $80 ; check if auxmem actually works
|
||||
@checker
|
||||
lda #$EE
|
||||
sta WRITEAUXMEM
|
||||
sta READAUXMEM
|
||||
sta $800
|
||||
lda $C00
|
||||
sta $0C00
|
||||
sta $0800
|
||||
lda $0C00
|
||||
cmp #$EE
|
||||
bne @auxworks
|
||||
asl $C00
|
||||
lda $800
|
||||
cmp $C00
|
||||
bne @auxworks
|
||||
sec
|
||||
bne @no
|
||||
asl $0C00
|
||||
asl
|
||||
cmp $0C00
|
||||
bne @no
|
||||
cmp $0800
|
||||
bne @yes
|
||||
@no clc
|
||||
+HIDE_NEXT_BYTE
|
||||
@auxworks
|
||||
clc
|
||||
sta WRITEMAINMEM
|
||||
@yes sec
|
||||
@finish sta WRITEMAINMEM
|
||||
sta READMAINMEM
|
||||
jmp @postcheck
|
||||
rts
|
||||
@checklen=*-@checker
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ ver_02 = 1
|
||||
;place no code before init label below.
|
||||
|
||||
;user-defined options
|
||||
verbose_info = 1 ;set to 1 to enable display of memory usage
|
||||
verbose_info = 0 ;set to 1 to enable display of memory usage
|
||||
enable_floppy = 0 ;set to 1 to enable floppy drive support
|
||||
poll_drive = 0 ;set to 1 to check if disk is in drive, recommended if allow_multi is enabled
|
||||
override_adr = 0 ;set to 1 to require an explicit load address
|
||||
@ -25,10 +25,10 @@ ver_02 = 1
|
||||
;seeking with aligned_read=1 requires non-zero offset
|
||||
allow_multi = 0 ;set to 1 to allow multiple floppies
|
||||
check_chksum = 0 ;set to 1 to enforce checksum verification for floppies
|
||||
allow_subdir = 0 ;set to 1 to allow opening subdirectories to access files
|
||||
allow_subdir = 1 ;set to 1 to allow opening subdirectories to access files
|
||||
might_exist = 0 ;set to 1 if file is not known to always exist already
|
||||
;makes use of status to indicate success or failure
|
||||
allow_aux = 0 ;set to 1 to allow read/write directly to/from aux memory
|
||||
allow_aux = 1 ;set to 1 to allow read/write directly to/from aux memory
|
||||
;requires load_high to be set for arbitrary memory access
|
||||
;else driver must be running from same memory target
|
||||
;i.e. running from main if accessing main, running from aux if accessing aux
|
||||
@ -38,11 +38,11 @@ ver_02 = 1
|
||||
always_trees = 0 ;set to 1 if the only file access involves tree files
|
||||
;not compatible with allow_subdir, allow_saplings
|
||||
detect_treof = 0 ;detect EOF during read of tree files
|
||||
allow_sparse = 0 ;enable support for reading sparse files
|
||||
bounds_check = 0 ;set to 1 to prevent access beyond the end of the file
|
||||
allow_sparse = 1 ;enable support for reading sparse files
|
||||
bounds_check = 1 ;set to 1 to prevent access beyond the end of the file
|
||||
;but limits file size to 64k-2 bytes.
|
||||
no_interrupts= 1 ;set to 1 to disable interrupts across calls
|
||||
detect_err = 1 ;set to 1 to to detect errors in no_interrupt mode
|
||||
no_interrupts= 0 ;set to 1 to disable interrupts across calls
|
||||
detect_err = 0 ;set to 1 to to detect errors in no_interrupt mode
|
||||
swap_zp = 0 ;set to 1 to include code to preserve zpage
|
||||
;used only by rwts_mode
|
||||
rwts_mode = 0 ;set to 1 to enable emulation of DOS RWTS when running from hard disk
|
||||
@ -2102,13 +2102,11 @@ hddfoundname iny
|
||||
!if (allow_subdir + allow_saplings + allow_trees) > 0 {
|
||||
sta hdddirbuf
|
||||
!if fast_trees = 0 {
|
||||
sta treeblklo
|
||||
} ;fast_trees
|
||||
iny
|
||||
lda (bloklo), y
|
||||
sta hdddirbuf + 256
|
||||
!if fast_trees = 0 {
|
||||
sta treeblkhi
|
||||
} ;fast_trees
|
||||
!if (allow_trees and always_trees) = 0 {
|
||||
plp
|
||||
|
Loading…
x
Reference in New Issue
Block a user