mirror of https://github.com/a2-4am/4cade.git
Compare commits
6 Commits
124432f373
...
535c4c841d
Author | SHA1 | Date |
---|---|---|
4am | 535c4c841d | |
4am | 7acb717b11 | |
4am | b5dffa65ab | |
4am | bc38e605d9 | |
4am | 43ab54a120 | |
4am | 6637a5e51e |
|
@ -50,13 +50,13 @@ cat res/GAMES.CONF |
|
|||
grep '^\!to' src/demo/*.a | cut -d'/' -f5-|cut -d'#' -f1 |
|
||||
grep -v "SPCARTOON" |
|
||||
while read f; do
|
||||
grep "$f=0" res/ATTRACT.CONF >/dev/null || echo "unused demo: $f";
|
||||
grep "^$f=0" res/ATTRACT.CONF >/dev/null || echo "unused demo: $f";
|
||||
done
|
||||
|
||||
# warn about unused slideshows
|
||||
cd res/SS
|
||||
for f in *.CONF; do
|
||||
grep "$f" ../ATTRACT.CONF >/dev/null || echo "unused slideshow: $f";
|
||||
grep "^$f=" ../ATTRACT.CONF >/dev/null || echo "unused slideshow: $f";
|
||||
done
|
||||
cd ../..
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -83,6 +83,7 @@ SHR27.CONF=5
|
|||
P3.CONF=1
|
||||
STAR.BLAZER=0
|
||||
ACTDHGR15.CONF=4
|
||||
AB5.CONF=1
|
||||
ACTIONEFG4.CONF=2
|
||||
AO=0
|
||||
HAYDEN.CONF=1
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# Attract mode for ANTIAIR
|
||||
# This file is automatically generated
|
||||
#
|
||||
|
||||
ANTIAIR2=A
|
||||
ANTIAIR=A
|
||||
|
||||
[eof]
|
|
@ -0,0 +1,9 @@
|
|||
#
|
||||
# Attract mode for HOPMAN
|
||||
# This file is automatically generated
|
||||
#
|
||||
|
||||
HOPMAN2=A
|
||||
HOPMAN=A
|
||||
|
||||
[eof]
|
|
@ -0,0 +1,8 @@
|
|||
#
|
||||
# Attract mode for YEWDOW
|
||||
# This file is automatically generated
|
||||
#
|
||||
|
||||
YEWDOW=A
|
||||
|
||||
[eof]
|
BIN
res/CACHE10.IDX
BIN
res/CACHE10.IDX
Binary file not shown.
BIN
res/CACHE11.IDX
BIN
res/CACHE11.IDX
Binary file not shown.
|
@ -0,0 +1,17 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Shoot the aliens to release their cargo
|
||||
|
||||
Don't get blocked in!
|
||||
|
||||
|
||||
|
||||
joystick to move
|
||||
|
||||
button 0 to fire
|
||||
[eof]
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
|
||||
|
||||
|
||||
Capture the flags and reach the goal
|
||||
|
||||
before time runs out
|
||||
|
||||
Avoid monsters & obstacles
|
||||
|
||||
|
||||
|
||||
joystick to move
|
||||
|
||||
button 0 to jump
|
||||
|
||||
|
||||
|
||||
Tip: you can change direction mid-jump
|
||||
[eof]
|
|
@ -0,0 +1,18 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Put down markers to guide the car
|
||||
|
||||
to the flags before time runs out
|
||||
|
||||
|
||||
|
||||
joystick to move
|
||||
|
||||
hold button 0 and move
|
||||
|
||||
to place marker in that direction
|
||||
[eof]
|
|
@ -1,4 +1,3 @@
|
|||
#
|
||||
# Master game list
|
||||
#
|
||||
# Format:
|
||||
|
@ -38,6 +37,7 @@
|
|||
10061,ANGEL.1=Angel-1
|
||||
01100,ANGRYBIRDS=Angry Birds
|
||||
00001,ANKH=Ankh
|
||||
10001,ANTIAIR=AntiAir
|
||||
00010,APE.ESCAPE=Ape Escape
|
||||
00010,AC=Apple Cider Spider
|
||||
10011,APPLE.INVADER=Apple Invader
|
||||
|
@ -224,6 +224,7 @@
|
|||
11110,HEAVY.BARREL=Heavy Barrel
|
||||
00011,HELLSTORM=Hell Storm
|
||||
00001,HIGH.RISE=High Rise
|
||||
10001,HOPMAN=Hopman
|
||||
00010,HORIZON.V=Horizon V
|
||||
00011,HUNGRYBOY=Hungryboy
|
||||
00011,HYPER.HEAD.ON=Hyper Head On
|
||||
|
@ -503,6 +504,7 @@
|
|||
00000,WILLY.BYTE=Willy Byte
|
||||
11130,WF=Wings of Fury
|
||||
10010,XEVIOUS=Xevious
|
||||
10001,YEWDOW=Yewdow
|
||||
00011,ZARGS=Zargs
|
||||
10010,ZAXXON=Zaxxon
|
||||
00051,ZENITH=Zenith
|
||||
|
|
|
@ -6,6 +6,7 @@ BY
|
|||
ARENA
|
||||
BUG.BATTLE
|
||||
BANDITS
|
||||
ANTIAIR
|
||||
A.CITY.DIES
|
||||
B1
|
||||
AO
|
||||
|
|
|
@ -8,6 +8,7 @@ AERIAL
|
|||
BATTLEZONE
|
||||
BOULDER.DASH3=BOULDER.DASH
|
||||
AZTEC3=AZTEC
|
||||
ANTIAIR2=ANTIAIR
|
||||
AQUATRON
|
||||
APPLE.PANIC
|
||||
BEACH.LANDING
|
||||
|
|
|
@ -8,6 +8,7 @@ B21=B2
|
|||
AGENT.U.S.A
|
||||
ALCAZAR
|
||||
BUBBLE.HEAD
|
||||
ANTIAIR
|
||||
BW3=BW
|
||||
B12=B1
|
||||
AXIS.ASSASSIN3=AXIS.ASSASSIN
|
||||
|
|
|
@ -8,6 +8,7 @@ HARD.HAT.MACK2=HARD.HAT.MACK
|
|||
JOUST2=JOUST
|
||||
IKARI.WARRIORS
|
||||
J.BIRD
|
||||
HOPMAN
|
||||
INFILTRATOR2=INFILTRATOR
|
||||
JUMPMAN
|
||||
JUGGLER
|
||||
|
|
|
@ -6,6 +6,7 @@ LODE001=LODE.RUNNER
|
|||
HARD.HAT.MACK
|
||||
LOST.TOMB
|
||||
HORIZON.V2=HORIZON.V
|
||||
HOPMAN2=HOPMAN
|
||||
LIFT2=LIFT
|
||||
HANDY.DANDY
|
||||
HELLSTORM2=HELLSTORM
|
||||
|
|
|
@ -8,6 +8,7 @@ TRACK.ATTACK
|
|||
TERITORY
|
||||
ZP
|
||||
TC
|
||||
YEWDOW
|
||||
VIDEO.VEGAS4=VIDEO.VEGAS
|
||||
TC3=TC
|
||||
AF
|
||||
|
|
|
@ -7,6 +7,7 @@ JUGGLER
|
|||
JELLYFISH
|
||||
LADY.TUT
|
||||
H.E.R.O
|
||||
HOPMAN
|
||||
JUNGLE.HUNT
|
||||
INVASION.FORCE
|
||||
HUNGRYBOY
|
||||
|
|
|
@ -8,6 +8,7 @@ GUNTUS
|
|||
SPUTNIK.ATTACK
|
||||
AERIAL
|
||||
BERZAP
|
||||
ANTIAIR
|
||||
CS
|
||||
GADGETZ
|
||||
BOOTSKELL
|
||||
|
|
|
@ -6,6 +6,7 @@ ALIEN.DOWNPOUR
|
|||
RUPTUS
|
||||
PENETRATOR
|
||||
ROBOTICS
|
||||
YEWDOW
|
||||
DINO.SMURF
|
||||
ASCEND
|
||||
GENIUS.3
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
BUTCHERBOB.86
|
||||
NEURAS
|
||||
LA
|
||||
HOPMAN
|
||||
NT
|
||||
WALL.DEFENCE
|
||||
CAVIT
|
||||
|
|
|
@ -12,6 +12,7 @@ TIME.TUNNELS
|
|||
VIDEO.VEGAS
|
||||
WALL.DEFENCE
|
||||
WAVY.NAVY
|
||||
YEWDOW
|
||||
THIEF
|
||||
|
||||
[eof]
|
||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,5 +1,13 @@
|
|||
# Total Replay changelog
|
||||
|
||||
## Revision 5.2 / unreleased
|
||||
|
||||
### Games added in v5.2
|
||||
|
||||
- AntiAir
|
||||
- Hopman
|
||||
- Yewdow
|
||||
|
||||
## Revision 5.1 / serial number 20240216
|
||||
|
||||
### Games added in v5.1
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
# https://sourceforge.net/projects/acme-crossass/
|
||||
ACME=acme
|
||||
|
||||
# https://github.com/mach-kernel/cadius
|
||||
CADIUS=cadius
|
||||
|
||||
EXOMIZER=exomizer mem -lnone -P23 -f -q
|
||||
|
||||
BUILDDIR=build
|
||||
DISKVOLUME=ANTIAIR
|
||||
LOADER=$(BUILDDIR)/LOADER.SYSTEM\#FF2000
|
||||
EXE=$(BUILDDIR)/ANTIAIR\#068000
|
||||
COMPRESSED=src/OBJ.X
|
||||
SOURCES=$(wildcard src/*.a) $(COMPRESSED)
|
||||
RES=$(wildcard res/*) $(wildcard ../common/res/*)
|
||||
BUILDDISK=$(BUILDDIR)/$(DISKVOLUME).po
|
||||
|
||||
.PHONY: clean mount all
|
||||
|
||||
$(BUILDDISK): $(EXE) $(LOADER) $(RES)
|
||||
|
||||
$(LOADER): $(SOURCES) | $(BUILDDIR)
|
||||
$(ACME) src/loader.a
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(LOADER)" -C
|
||||
@touch "$@"
|
||||
|
||||
$(EXE): $(SOURCES) $(COMPRESSED) | $(BUILDDIR)
|
||||
$(ACME) src/antiair.a
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(EXE)" -C
|
||||
@touch "$@"
|
||||
|
||||
$(RES): $(BUILDDIR)
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$@" -C
|
||||
@touch "$@"
|
||||
|
||||
$(COMPRESSED):
|
||||
$(EXOMIZER) src/OBJ@0x4000 -o "$@"
|
||||
|
||||
mount: $(BUILDDISK)
|
||||
@open "$(BUILDDISK)"
|
||||
|
||||
clean:
|
||||
rm -rf "$(BUILDDIR)"
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir -p "$@"
|
||||
$(CADIUS) CREATEVOLUME "$(BUILDDISK)" "$(DISKVOLUME)" 140KB -C
|
||||
|
||||
all: clean mount
|
||||
|
||||
.NOTPARALLEL:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,29 @@
|
|||
!cpu 6502
|
||||
*=$8000
|
||||
!to "build/ANTIAIR#068000",plain
|
||||
|
||||
!src "../common/src/constants.a"
|
||||
!src "../common/src/macros.a"
|
||||
|
||||
jmp start
|
||||
|
||||
compressed_data
|
||||
!bin "src/OBJ.X"
|
||||
FORWARD_DECRUNCHING = 1
|
||||
SHOW_PROGRESS_DURING_DECRUNCH = 0
|
||||
!src "../common/src/exodecrunch.a"
|
||||
|
||||
start
|
||||
+INIT_MACHINE
|
||||
!if * != $955A {
|
||||
!serious "Adjust prelaunch to patch JSR at ", *, " to JMP"
|
||||
}
|
||||
jsr decrunch ; compressed data contains target address
|
||||
jmp $4000
|
||||
|
||||
get_crunched_byte
|
||||
lda compressed_data
|
||||
inc get_crunched_byte+1
|
||||
bne +
|
||||
inc get_crunched_byte+2
|
||||
+ rts
|
|
@ -0,0 +1,25 @@
|
|||
!cpu 6502
|
||||
*=$2000
|
||||
!to "build/LOADER.SYSTEM#FF2000",plain
|
||||
|
||||
!src "../common/src/constants.a"
|
||||
!src "../common/src/macros.a"
|
||||
|
||||
+READ_ENTIRE_FILE parm_boot_open, parm_boot_read
|
||||
jmp (entry)
|
||||
|
||||
parm_boot_open
|
||||
!byte 3
|
||||
!word filename
|
||||
!word $2100
|
||||
!byte 0
|
||||
|
||||
parm_boot_read
|
||||
!byte 4
|
||||
!byte 1
|
||||
entry !word $8000
|
||||
!word $FFFF
|
||||
!word 0
|
||||
|
||||
filename
|
||||
!text 7,"ANTIAIR"
|
Binary file not shown.
|
@ -0,0 +1,73 @@
|
|||
;license:MIT
|
||||
;(c) 2024 by 4am
|
||||
;
|
||||
|
||||
!ifndef _CONSTANTS_ {
|
||||
|
||||
SELF_MODIFIED_BYTE = $FD
|
||||
SELF_MODIFIED_WORD = $FDFD
|
||||
|
||||
; standard memory addresses
|
||||
CH = $24
|
||||
CV = $25
|
||||
BASL = $28
|
||||
INVFLG = $32
|
||||
RWTS_PTR = $48
|
||||
RNDL = $4E
|
||||
RNDH = $4F
|
||||
PRODOS_MLI = $BF00
|
||||
PRODOS_BOOT_UNIT = $BF30
|
||||
PRODOS_MEMORY_MAP = $BF58
|
||||
PRODOS_MACHID = $BF98
|
||||
KBD = $C000
|
||||
CLEARKBD = $C010
|
||||
STOREOFF = $C000 ; STA then use the following 4 flags:
|
||||
READMAINMEM = $C002 ; STA to read from main mem
|
||||
READAUXMEM = $C003 ; STA to read from aux mem
|
||||
WRITEMAINMEM = $C004 ; STA to write to main mem
|
||||
WRITEAUXMEM = $C005 ; STA to write to aux mem
|
||||
CLR80VID = $C00C ; 40 columns
|
||||
PRIMARYCHARSET = $C00E ; no mousetext for you
|
||||
ALTCHARSET = $C00F ; yay mousetext
|
||||
CLEARKBD = $C010 ; clear last key pressed
|
||||
SLOT3STATUS = $C017 ; bit 7 only
|
||||
MONOCOLOR = $C021 ; IIgs bit 7 switches composite mono/color modes
|
||||
TBCOLOR = $C022 ; IIgs text foreground and background colors (also VidHD but write-only)
|
||||
NEWVIDEO = $C029 ; IIgs graphics modes (also VidHD)
|
||||
CLOCKCTL = $C034 ; bits 0-3 are IIgs border color (also VidHD)
|
||||
GFXMODE = $C050
|
||||
TEXTMODE = $C051
|
||||
FULLGFX = $C052
|
||||
MIXEDGFX = $C053
|
||||
PAGE1 = $C054 ; page 1 (affects text, HGR, DHGR)
|
||||
PAGE2 = $C055 ; page 2 (affects text, HGR, DHGR)
|
||||
HIRES = $C057
|
||||
AUXMOVE = $C311
|
||||
ROM_TEXT = $FB2F
|
||||
ROM_FINALIZE_RESET = $FB6F
|
||||
ROM_MACHINEID = $FBB3
|
||||
ROM_BASCALC = $FBC1
|
||||
ROM_HOME = $FC58
|
||||
ROM_CLREOL_FROM_Y = $FC9E
|
||||
ROM_WAIT = $FCA8
|
||||
ROM_KEYIN = $FD1B
|
||||
ROM_COUT = $FDED
|
||||
ROM_COUT1 = $FDF0
|
||||
ROM_INVERSE = $FE80 ; INVERSE text
|
||||
ROM_NORMAL = $FE84 ; NORMAL text (instead of INVERSE or FLASH)
|
||||
ROM_IN0 = $FE89 ; SETKBD
|
||||
ROM_PR0 = $FE93 ; SETVID
|
||||
|
||||
; ProDOS constants
|
||||
CMD_QUIT = $65
|
||||
CMD_ONLINE = $C5
|
||||
CMD_SETPREFIX = $C6
|
||||
CMD_GETPREFIX = $C7
|
||||
CMD_OPEN = $C8
|
||||
CMD_READ = $CA
|
||||
CMD_WRITE = $CB
|
||||
CMD_CLOSE = $CC
|
||||
CMD_SEEK = $CE
|
||||
|
||||
_CONSTANTS_=*
|
||||
}
|
|
@ -0,0 +1,487 @@
|
|||
; This source code is altered and is not the original version found on
|
||||
; the Exomizer homepage.
|
||||
; It contains modifications made by qkumba to depack a packed file
|
||||
; optionally crunched forward, and additional modifications by 4am
|
||||
; for an optional progress UI.
|
||||
;
|
||||
; Original copyright statement follows:
|
||||
;
|
||||
; Copyright (c) 2002 - 2018 Magnus Lind.
|
||||
;
|
||||
; This software is provided 'as-is', without any express or implied warranty.
|
||||
; In no event will the authors be held liable for any damages arising from
|
||||
; the use of this software.
|
||||
;
|
||||
; Permission is granted to anyone to use this software for any purpose,
|
||||
; including commercial applications, and to alter it and redistribute it
|
||||
; freely, subject to the following restrictions:
|
||||
;
|
||||
; 1. The origin of this software must not be misrepresented; you must not
|
||||
; claim that you wrote the original software. If you use this software in a
|
||||
; product, an acknowledgment in the product documentation would be
|
||||
; appreciated but is not required.
|
||||
;
|
||||
; 2. Altered source versions must be plainly marked as such, and must not
|
||||
; be misrepresented as being the original software.
|
||||
;
|
||||
; 3. This notice may not be removed or altered from any distribution.
|
||||
;
|
||||
; 4. The names of this software and/or it's copyright holders may not be
|
||||
; used to endorse or promote products derived from this software without
|
||||
; specific prior written permission.
|
||||
;
|
||||
; -------------------------------------------------------------------
|
||||
; The decruncher jsr:s to the get_crunched_byte address when it wants to
|
||||
; read a crunched byte into A. This subroutine has to preserve X and Y
|
||||
; register and must not modify the state of the carry nor the overflow flag.
|
||||
; -------------------------------------------------------------------
|
||||
;.import get_crunched_byte
|
||||
; -------------------------------------------------------------------
|
||||
; this function is the heart of the decruncher.
|
||||
; It initializes the decruncher zeropage locations and precalculates the
|
||||
; decrunch tables and decrunches the data
|
||||
; This function will not change the interrupt status bit and it will not
|
||||
; modify the memory configuration.
|
||||
; -------------------------------------------------------------------
|
||||
;.export decrunch
|
||||
|
||||
; -------------------------------------------------------------------
|
||||
; Controls if the shared get_bits routines should be inlined or not.
|
||||
;INLINE_GET_BITS=1
|
||||
; -------------------------------------------------------------------
|
||||
; if literal sequences is not used (the data was crunched with the -c
|
||||
; flag) then the following line can be uncommented for shorter and.
|
||||
; slightly faster code.
|
||||
;LITERAL_SEQUENCES_NOT_USED = 1
|
||||
; -------------------------------------------------------------------
|
||||
; if the sequence length is limited to 256 (the data was crunched with
|
||||
; the -M256 flag) then the following line can be uncommented for
|
||||
; shorter and slightly faster code.
|
||||
;MAX_SEQUENCE_LENGTH_256 = 1
|
||||
; -------------------------------------------------------------------
|
||||
; if the sequence length 3 has its own offset table then the following
|
||||
; line can be uncommented for in some situations slightly better
|
||||
; compression at the cost of a larger decrunch table.
|
||||
EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE = 1
|
||||
; -------------------------------------------------------------------
|
||||
; optional progress UI
|
||||
!IFNDEF SHOW_PROGRESS_DURING_DECRUNCH {
|
||||
!set SHOW_PROGRESS_DURING_DECRUNCH = 0
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; zero page addresses used
|
||||
; -------------------------------------------------------------------
|
||||
zp_len_lo = $a7
|
||||
zp_len_hi = $a8
|
||||
|
||||
zp_src_lo = $ae
|
||||
zp_src_hi = zp_src_lo + 1
|
||||
|
||||
zp_bits_hi = $fc
|
||||
|
||||
zp_bitbuf = $fd
|
||||
zp_dest_lo = zp_bitbuf + 1 ; dest addr lo
|
||||
zp_dest_hi = zp_bitbuf + 2 ; dest addr hi
|
||||
|
||||
!IFDEF EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE {
|
||||
encoded_entries = 68
|
||||
} ELSE {
|
||||
encoded_entries = 52
|
||||
}
|
||||
|
||||
tabl_bi = decrunch_table
|
||||
tabl_lo = decrunch_table + encoded_entries
|
||||
tabl_hi = decrunch_table + encoded_entries * 2
|
||||
|
||||
;; refill bits is always inlined
|
||||
!MACRO mac_refill_bits {
|
||||
pha
|
||||
jsr get_crunched_byte
|
||||
rol
|
||||
sta zp_bitbuf
|
||||
pla
|
||||
}
|
||||
|
||||
!IFDEF INLINE_GET_BITS {
|
||||
!MACRO mac_get_bits {
|
||||
adc #$80 ; needs c=0, affects v
|
||||
asl
|
||||
bpl gb_skip
|
||||
gb_next:
|
||||
asl zp_bitbuf
|
||||
bne gb_ok
|
||||
mac_refill_bits
|
||||
gb_ok:
|
||||
rol
|
||||
bmi gb_next
|
||||
gb_skip:
|
||||
bvc skip
|
||||
gb_get_hi:
|
||||
sec
|
||||
sta zp_bits_hi
|
||||
jsr get_crunched_byte
|
||||
skip:
|
||||
}
|
||||
} ELSE {
|
||||
!MACRO mac_get_bits {
|
||||
jsr get_bits
|
||||
}
|
||||
get_bits:
|
||||
adc #$80 ; needs c=0, affects v
|
||||
asl
|
||||
bpl gb_skip
|
||||
gb_next:
|
||||
asl zp_bitbuf
|
||||
bne gb_ok
|
||||
+mac_refill_bits
|
||||
gb_ok:
|
||||
rol
|
||||
bmi gb_next
|
||||
gb_skip:
|
||||
bvs gb_get_hi
|
||||
rts
|
||||
gb_get_hi:
|
||||
sec
|
||||
sta zp_bits_hi
|
||||
jmp get_crunched_byte
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; no code below this comment has to be modified in order to generate
|
||||
; a working decruncher of this source file.
|
||||
; However, you may want to relocate the tables last in the file to a
|
||||
; more suitable address.
|
||||
; -------------------------------------------------------------------
|
||||
|
||||
; -------------------------------------------------------------------
|
||||
; jsr this label to decrunch, it will in turn init the tables and
|
||||
; call the decruncher
|
||||
; no constraints on register content, however the
|
||||
; decimal flag has to be #0 (it almost always is, otherwise do a cld)
|
||||
decrunch:
|
||||
|
||||
!IF SHOW_PROGRESS_DURING_DECRUNCH = 1 {
|
||||
ldx #(kExoProgressWidth+2)
|
||||
lda #$DF
|
||||
- sta $0528+(20-(kExoProgressWidth/2))-2, x
|
||||
sta $05A8+(20-(kExoProgressWidth/2))-2, x
|
||||
dex
|
||||
bpl -
|
||||
lda #$20
|
||||
sta $05A8+(20-(kExoProgressWidth/2))-2
|
||||
sta $05A8+(20-(kExoProgressWidth/2))+kExoProgressWidth
|
||||
lda #$A8+(20-(kExoProgressWidth/2))-1
|
||||
sta ExoProgressPtr+1
|
||||
decrunch_no_reset_progress:
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; init zeropage, x and y regs. (12 bytes)
|
||||
;
|
||||
ldy #0
|
||||
ldx #3
|
||||
init_zp:
|
||||
jsr get_crunched_byte
|
||||
sta zp_bitbuf - 1,x
|
||||
dex
|
||||
bne init_zp
|
||||
; -------------------------------------------------------------------
|
||||
; calculate tables (62 bytes) + get_bits macro
|
||||
; x and y must be #0 when entering
|
||||
;
|
||||
clc
|
||||
table_gen:
|
||||
tax
|
||||
tya
|
||||
and #$0f
|
||||
sta tabl_lo,y
|
||||
beq shortcut ; start a new sequence
|
||||
; -------------------------------------------------------------------
|
||||
txa
|
||||
adc tabl_lo - 1,y
|
||||
sta tabl_lo,y
|
||||
lda zp_len_hi
|
||||
adc tabl_hi - 1,y
|
||||
shortcut:
|
||||
sta tabl_hi,y
|
||||
; -------------------------------------------------------------------
|
||||
lda #$01
|
||||
sta <zp_len_hi
|
||||
lda #$78 ; %01111000
|
||||
+mac_get_bits
|
||||
; -------------------------------------------------------------------
|
||||
lsr
|
||||
tax
|
||||
beq rolled
|
||||
php
|
||||
rolle:
|
||||
asl zp_len_hi
|
||||
sec
|
||||
ror
|
||||
dex
|
||||
bne rolle
|
||||
plp
|
||||
rolled:
|
||||
ror
|
||||
sta tabl_bi,y
|
||||
bmi no_fixup_lohi
|
||||
lda zp_len_hi
|
||||
stx zp_len_hi
|
||||
!BYTE $24
|
||||
no_fixup_lohi:
|
||||
txa
|
||||
; -------------------------------------------------------------------
|
||||
iny
|
||||
cpy #encoded_entries
|
||||
bne table_gen
|
||||
; -------------------------------------------------------------------
|
||||
; prepare for main decruncher
|
||||
ldy zp_dest_lo
|
||||
stx zp_dest_lo
|
||||
stx zp_bits_hi
|
||||
; -------------------------------------------------------------------
|
||||
; copy one literal byte to destination (11(10) bytes)
|
||||
;
|
||||
!ifndef FORWARD_DECRUNCHING {
|
||||
!set FORWARD_DECRUNCHING = 1
|
||||
}
|
||||
literal_start1:
|
||||
!IF SHOW_PROGRESS_DURING_DECRUNCH = 1 {
|
||||
dec ExoProgressCounter
|
||||
bne +
|
||||
lda #$20
|
||||
ExoProgressPtr
|
||||
sta $0500 ; SMC lo byte
|
||||
inc ExoProgressPtr+1
|
||||
+
|
||||
}
|
||||
!if FORWARD_DECRUNCHING = 0 {
|
||||
tya
|
||||
bne no_hi_decr
|
||||
dec zp_dest_hi
|
||||
no_hi_decr:
|
||||
dey
|
||||
jsr get_crunched_byte
|
||||
sta (zp_dest_lo),y
|
||||
} else {
|
||||
jsr get_crunched_byte
|
||||
sta (zp_dest_lo),y
|
||||
iny
|
||||
bne no_hi_incr
|
||||
inc zp_dest_hi
|
||||
no_hi_incr:
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; fetch sequence length index (15 bytes)
|
||||
; x must be #0 when entering and contains the length index + 1
|
||||
; when exiting or 0 for literal byte
|
||||
next_round:
|
||||
dex
|
||||
lda zp_bitbuf
|
||||
no_literal1:
|
||||
asl
|
||||
bne nofetch8
|
||||
jsr get_crunched_byte
|
||||
rol
|
||||
nofetch8:
|
||||
inx
|
||||
bcc no_literal1
|
||||
sta zp_bitbuf
|
||||
; -------------------------------------------------------------------
|
||||
; check for literal byte (2 bytes)
|
||||
;
|
||||
beq literal_start1
|
||||
; -------------------------------------------------------------------
|
||||
; check for decrunch done and literal sequences (4 bytes)
|
||||
;
|
||||
cpx #$11
|
||||
!IFDEF INLINE_GET_BITS {
|
||||
bcc skip_jmp
|
||||
jmp exit_or_lit_seq
|
||||
skip_jmp:
|
||||
} ELSE {
|
||||
bcs exit_or_lit_seq
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; calulate length of sequence (zp_len) (18(11) bytes) + get_bits macro
|
||||
;
|
||||
lda tabl_bi - 1,x
|
||||
+mac_get_bits
|
||||
adc tabl_lo - 1,x ; we have now calculated zp_len_lo
|
||||
sta zp_len_lo
|
||||
!IFNDEF MAX_SEQUENCE_LENGTH_256 {
|
||||
lda zp_bits_hi
|
||||
adc tabl_hi - 1,x ; c = 0 after this.
|
||||
sta zp_len_hi
|
||||
; -------------------------------------------------------------------
|
||||
; here we decide what offset table to use (27(26) bytes) + get_bits_nc macro
|
||||
; z-flag reflects zp_len_hi here
|
||||
;
|
||||
ldx zp_len_lo
|
||||
} ELSE {
|
||||
tax
|
||||
}
|
||||
lda #$e1
|
||||
!IFDEF EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE {
|
||||
cpx #$04
|
||||
} ELSE {
|
||||
cpx #$03
|
||||
}
|
||||
bcs gbnc2_next
|
||||
lda tabl_bit - 1,x
|
||||
gbnc2_next:
|
||||
asl zp_bitbuf
|
||||
bne gbnc2_ok
|
||||
tax
|
||||
jsr get_crunched_byte
|
||||
rol
|
||||
sta zp_bitbuf
|
||||
txa
|
||||
gbnc2_ok:
|
||||
rol
|
||||
bcs gbnc2_next
|
||||
tax
|
||||
; -------------------------------------------------------------------
|
||||
; calulate absolute offset (zp_src) (21(23) bytes) + get_bits macro
|
||||
;
|
||||
!IFNDEF MAX_SEQUENCE_LENGTH_256 {
|
||||
lda #0
|
||||
sta zp_bits_hi
|
||||
}
|
||||
lda tabl_bi,x
|
||||
+mac_get_bits
|
||||
!if FORWARD_DECRUNCHING = 0 {
|
||||
adc tabl_lo,x
|
||||
sta zp_src_lo
|
||||
lda zp_bits_hi
|
||||
adc tabl_hi,x
|
||||
adc zp_dest_hi
|
||||
} else {
|
||||
clc
|
||||
adc tabl_lo,x
|
||||
eor #$ff
|
||||
sta zp_src_lo
|
||||
lda zp_dest_hi
|
||||
bcc skip_dest_hi
|
||||
sbc #1
|
||||
clc
|
||||
skip_dest_hi:
|
||||
sbc zp_bits_hi
|
||||
sbc tabl_hi,x
|
||||
clc
|
||||
}
|
||||
sta zp_src_hi
|
||||
; -------------------------------------------------------------------
|
||||
; prepare for copy loop (2 bytes)
|
||||
;
|
||||
pre_copy:
|
||||
ldx zp_len_lo
|
||||
; -------------------------------------------------------------------
|
||||
; main copy loop (30 bytes)
|
||||
;
|
||||
copy_next:
|
||||
!if FORWARD_DECRUNCHING = 0 {
|
||||
tya
|
||||
bne copy_skip_hi
|
||||
dec zp_dest_hi
|
||||
dec zp_src_hi
|
||||
copy_skip_hi:
|
||||
dey
|
||||
}
|
||||
!IFNDEF LITERAL_SEQUENCES_NOT_USED {
|
||||
bcs get_literal_byte
|
||||
}
|
||||
lda (zp_src_lo),y
|
||||
literal_byte_gotten:
|
||||
sta (zp_dest_lo),y
|
||||
!if FORWARD_DECRUNCHING = 1 {
|
||||
iny
|
||||
bne copy_skip_hi
|
||||
inc zp_dest_hi
|
||||
inc zp_src_hi
|
||||
copy_skip_hi:
|
||||
}
|
||||
dex
|
||||
bne copy_next
|
||||
!IFNDEF MAX_SEQUENCE_LENGTH_256 {
|
||||
lda zp_len_hi
|
||||
!IFDEF INLINE_GET_BITS {
|
||||
bne copy_next_hi
|
||||
}
|
||||
}
|
||||
begin_stx:
|
||||
stx zp_bits_hi
|
||||
!IFNDEF INLINE_GET_BITS {
|
||||
beq next_round
|
||||
} ELSE {
|
||||
jmp next_round
|
||||
}
|
||||
!IFNDEF MAX_SEQUENCE_LENGTH_256 {
|
||||
copy_next_hi:
|
||||
dec zp_len_hi
|
||||
jmp copy_next
|
||||
}
|
||||
!IFNDEF LITERAL_SEQUENCES_NOT_USED {
|
||||
get_literal_byte:
|
||||
jsr get_crunched_byte
|
||||
bcs literal_byte_gotten
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; exit or literal sequence handling (16(12) bytes)
|
||||
;
|
||||
exit_or_lit_seq:
|
||||
!IFNDEF LITERAL_SEQUENCES_NOT_USED {
|
||||
beq decr_exit
|
||||
jsr get_crunched_byte
|
||||
!IFNDEF MAX_SEQUENCE_LENGTH_256 {
|
||||
sta zp_len_hi
|
||||
}
|
||||
jsr get_crunched_byte
|
||||
tax
|
||||
bcs copy_next
|
||||
decr_exit:
|
||||
}
|
||||
rts
|
||||
!IFDEF EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE {
|
||||
; -------------------------------------------------------------------
|
||||
; the static stable used for bits+offset for lengths 1, 2 and 3 (3 bytes)
|
||||
; bits 2, 4, 4 and offsets 64, 48, 32 corresponding to
|
||||
; %10010000, %11100011, %11100010
|
||||
tabl_bit:
|
||||
!BYTE $90, $e3, $e2
|
||||
} ELSE {
|
||||
; -------------------------------------------------------------------
|
||||
; the static stable used for bits+offset for lengths 1 and 2 (2 bytes)
|
||||
; bits 2, 4 and offsets 48, 32 corresponding to %10001100, %11100010
|
||||
tabl_bit:
|
||||
!BYTE $8c, $e2
|
||||
}
|
||||
!IF SHOW_PROGRESS_DURING_DECRUNCH = 1 {
|
||||
ExoProgressCounter
|
||||
!byte $00
|
||||
}
|
||||
; -------------------------------------------------------------------
|
||||
; end of decruncher
|
||||
; -------------------------------------------------------------------
|
||||
|
||||
; -------------------------------------------------------------------
|
||||
; this 156 (204) byte table area may be relocated. It may also be
|
||||
; clobbered by other data between decrunches.
|
||||
; -------------------------------------------------------------------
|
||||
decrunch_table=$200;;:
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;;.IFDEF EXTRA_TABLE_ENTRY_FOR_LENGTH_THREE
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;;.ENDIF
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
;; .byte 0,0,0,0,0,0,0,0,0,0,0,0
|
||||
; -------------------------------------------------------------------
|
||||
; end of decruncher
|
||||
; -------------------------------------------------------------------
|
|
@ -0,0 +1,55 @@
|
|||
!macro INIT_MACHINE {
|
||||
cld
|
||||
bit $C082
|
||||
sta PRIMARYCHARSET
|
||||
sta CLR80VID
|
||||
sta STOREOFF
|
||||
sta READMAINMEM
|
||||
jsr ROM_TEXT
|
||||
jsr ROM_HOME
|
||||
jsr ROM_PR0
|
||||
jsr ROM_IN0
|
||||
}
|
||||
|
||||
; X=0, Z=1 on exit
|
||||
; A clobbered
|
||||
; Y preserved
|
||||
!macro SHORT_COPY .start, .end, .target {
|
||||
ldx #<(.end-.start)
|
||||
- lda .start-1, x
|
||||
sta .target-1, x
|
||||
dex
|
||||
bne -
|
||||
}
|
||||
|
||||
!macro READ_ENTIRE_FILE .parm_open, .parm_read {
|
||||
jsr PRODOS_MLI
|
||||
!byte CMD_OPEN
|
||||
!word .parm_open
|
||||
jsr PRODOS_MLI
|
||||
!byte CMD_READ
|
||||
!word .parm_read
|
||||
jsr PRODOS_MLI
|
||||
!byte CMD_CLOSE
|
||||
!word +
|
||||
!byte $2C
|
||||
+ !byte 1
|
||||
!byte 0
|
||||
}
|
||||
|
||||
!macro COPY_TO_AUXMEM .mainstart, .mainend, .auxstart {
|
||||
lda #<.mainstart
|
||||
sta $3C
|
||||
lda #>.mainstart
|
||||
sta $3D
|
||||
lda #<.mainend
|
||||
sta $3E
|
||||
lda #>.mainend
|
||||
sta $3F
|
||||
lda #<.auxstart
|
||||
sta $42
|
||||
lda #>.auxstart
|
||||
sta $43
|
||||
sec
|
||||
jsr AUXMOVE
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
;license:MIT
|
||||
;(c) 2024 by 4am
|
||||
;
|
||||
|
||||
;
|
||||
; Ensure ProDOS has a current prefix, otherwise opening any file will fail,
|
||||
; which is bad. If launched from Bitsy Bye, there will be no current prefix.
|
||||
; In that case, we get the boot volume name, then set the prefix to that.
|
||||
; PREFIX_BUFFER ($40 bytes) is clobbered but may be reused after.
|
||||
;
|
||||
prefix_loop
|
||||
jsr PRODOS_MLI
|
||||
op_prefix
|
||||
!byte CMD_GETPREFIX ; self-modified
|
||||
!word parm_prefix
|
||||
ldx PREFIX_BUFFER
|
||||
bne clear_memory_map
|
||||
; get boot volume name
|
||||
lda PRODOS_BOOT_UNIT
|
||||
sta parm_online_unit
|
||||
jsr PRODOS_MLI
|
||||
!byte CMD_ONLINE
|
||||
!word parm_online
|
||||
|
||||
lda PREFIX_BUFFER+1
|
||||
and #$0F
|
||||
tax
|
||||
inx
|
||||
stx PREFIX_BUFFER
|
||||
lda #$2F
|
||||
sta PREFIX_BUFFER+1
|
||||
; PREFIX_BUFFER is now a length-prefixed string
|
||||
; of '/' + the boot volume name
|
||||
|
||||
dec op_prefix ; -> CMD_SETPREFIX
|
||||
bne prefix_loop ; always branches
|
||||
|
||||
parm_prefix
|
||||
!byte 1
|
||||
!word PREFIX_BUFFER
|
||||
|
||||
parm_online
|
||||
!byte 2
|
||||
parm_online_unit
|
||||
!byte SELF_MODIFIED_BYTE
|
||||
!word PREFIX_BUFFER+1
|
||||
|
||||
clear_memory_map
|
||||
; clear ProDOS memory bitmap
|
||||
ldx #$17
|
||||
lda #$00
|
||||
- sta PRODOS_MEMORY_MAP, x
|
||||
dex
|
||||
bpl -
|
|
@ -0,0 +1,51 @@
|
|||
# https://sourceforge.net/projects/acme-crossass/
|
||||
ACME=acme
|
||||
|
||||
# https://github.com/mach-kernel/cadius
|
||||
CADIUS=cadius
|
||||
|
||||
EXOMIZER=exomizer mem -lnone -P23 -f -q
|
||||
|
||||
BUILDDIR=build
|
||||
DISKVOLUME=HOPMAN
|
||||
LOADER=$(BUILDDIR)/LOADER.SYSTEM\#FF2000
|
||||
EXE=$(BUILDDIR)/HOPMAN\#068000
|
||||
COMPRESSED=src/OBJ.X
|
||||
SOURCES=$(wildcard src/*.a) $(COMPRESSED)
|
||||
RES=$(wildcard res/*) $(wildcard ../common/res/*)
|
||||
BUILDDISK=$(BUILDDIR)/$(DISKVOLUME).po
|
||||
|
||||
.PHONY: clean mount all
|
||||
|
||||
$(BUILDDISK): $(EXE) $(LOADER) $(RES)
|
||||
|
||||
$(LOADER): $(SOURCES) | $(BUILDDIR)
|
||||
$(ACME) src/loader.a
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(LOADER)" -C
|
||||
@touch "$@"
|
||||
|
||||
$(EXE): $(SOURCES) $(COMPRESSED) | $(BUILDDIR)
|
||||
$(ACME) src/hopman.a
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(EXE)" -C
|
||||
@touch "$@"
|
||||
|
||||
$(RES): $(BUILDDIR)
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$@" -C
|
||||
@touch "$@"
|
||||
|
||||
$(COMPRESSED):
|
||||
$(EXOMIZER) src/OBJ@0x4000 -o "$@"
|
||||
|
||||
mount: $(BUILDDISK)
|
||||
@open "$(BUILDDISK)"
|
||||
|
||||
clean:
|
||||
rm -rf "$(BUILDDIR)"
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir -p "$@"
|
||||
$(CADIUS) CREATEVOLUME "$(BUILDDISK)" "$(DISKVOLUME)" 140KB -C
|
||||
|
||||
all: clean mount
|
||||
|
||||
.NOTPARALLEL:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,29 @@
|
|||
!cpu 6502
|
||||
*=$8000
|
||||
!to "build/HOPMAN#068000",plain
|
||||
|
||||
!src "../common/src/constants.a"
|
||||
!src "../common/src/macros.a"
|
||||
|
||||
jmp start
|
||||
|
||||
compressed_data
|
||||
!bin "src/OBJ.X"
|
||||
FORWARD_DECRUNCHING = 1
|
||||
SHOW_PROGRESS_DURING_DECRUNCH = 0
|
||||
!src "../common/src/exodecrunch.a"
|
||||
|
||||
start
|
||||
+INIT_MACHINE
|
||||
!if * != $98D6 {
|
||||
!serious "Adjust prelaunch to patch JSR at ", *, " to JMP"
|
||||
}
|
||||
jsr decrunch ; compressed data contains target address
|
||||
jmp $4000
|
||||
|
||||
get_crunched_byte
|
||||
lda compressed_data
|
||||
inc get_crunched_byte+1
|
||||
bne +
|
||||
inc get_crunched_byte+2
|
||||
+ rts
|
|
@ -0,0 +1,25 @@
|
|||
!cpu 6502
|
||||
*=$2000
|
||||
!to "build/LOADER.SYSTEM#FF2000",plain
|
||||
|
||||
!src "../common/src/constants.a"
|
||||
!src "../common/src/macros.a"
|
||||
|
||||
+READ_ENTIRE_FILE parm_boot_open, parm_boot_read
|
||||
jmp (entry)
|
||||
|
||||
parm_boot_open
|
||||
!byte 3
|
||||
!word filename
|
||||
!word $2100
|
||||
!byte 0
|
||||
|
||||
parm_boot_read
|
||||
!byte 4
|
||||
!byte 1
|
||||
entry !word $8000
|
||||
!word $FFFF
|
||||
!word 0
|
||||
|
||||
filename
|
||||
!text 6,"HOPMAN"
|
|
@ -0,0 +1,51 @@
|
|||
# https://sourceforge.net/projects/acme-crossass/
|
||||
ACME=acme
|
||||
|
||||
# https://github.com/mach-kernel/cadius
|
||||
CADIUS=cadius
|
||||
|
||||
EXOMIZER=exomizer mem -lnone -P23 -f -q
|
||||
|
||||
BUILDDIR=build
|
||||
DISKVOLUME=YEWDOW
|
||||
LOADER=$(BUILDDIR)/LOADER.SYSTEM\#FF2000
|
||||
EXE=$(BUILDDIR)/YEWDOW\#068000
|
||||
COMPRESSED=src/OBJ.X
|
||||
SOURCES=$(wildcard src/*.a) $(COMPRESSED)
|
||||
RES=$(wildcard res/*) $(wildcard ../common/res/*)
|
||||
BUILDDISK=$(BUILDDIR)/$(DISKVOLUME).po
|
||||
|
||||
.PHONY: clean mount all
|
||||
|
||||
$(BUILDDISK): $(EXE) $(LOADER) $(RES)
|
||||
|
||||
$(LOADER): $(SOURCES) | $(BUILDDIR)
|
||||
$(ACME) src/loader.a
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(LOADER)" -C
|
||||
@touch "$@"
|
||||
|
||||
$(EXE): $(SOURCES) $(COMPRESSED) | $(BUILDDIR)
|
||||
$(ACME) src/yewdow.a
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$(EXE)" -C
|
||||
@touch "$@"
|
||||
|
||||
$(RES): $(BUILDDIR)
|
||||
$(CADIUS) REPLACEFILE "$(BUILDDISK)" "/$(DISKVOLUME)/" "$@" -C
|
||||
@touch "$@"
|
||||
|
||||
$(COMPRESSED):
|
||||
$(EXOMIZER) src/OBJ@0x4000 -o "$@"
|
||||
|
||||
mount: $(BUILDDISK)
|
||||
@open "$(BUILDDISK)"
|
||||
|
||||
clean:
|
||||
rm -rf "$(BUILDDIR)"
|
||||
|
||||
$(BUILDDIR):
|
||||
mkdir -p "$@"
|
||||
$(CADIUS) CREATEVOLUME "$(BUILDDISK)" "$(DISKVOLUME)" 140KB -C
|
||||
|
||||
all: clean mount
|
||||
|
||||
.NOTPARALLEL:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,25 @@
|
|||
!cpu 6502
|
||||
*=$2000
|
||||
!to "build/LOADER.SYSTEM#FF2000",plain
|
||||
|
||||
!src "../common/src/constants.a"
|
||||
!src "../common/src/macros.a"
|
||||
|
||||
+READ_ENTIRE_FILE parm_boot_open, parm_boot_read
|
||||
jmp (entry)
|
||||
|
||||
parm_boot_open
|
||||
!byte 3
|
||||
!word filename
|
||||
!word $2100
|
||||
!byte 0
|
||||
|
||||
parm_boot_read
|
||||
!byte 4
|
||||
!byte 1
|
||||
entry !word $8000
|
||||
!word $FFFF
|
||||
!word 0
|
||||
|
||||
filename
|
||||
!text 6,"YEWDOW"
|
|
@ -0,0 +1,29 @@
|
|||
!cpu 6502
|
||||
*=$8000
|
||||
!to "build/YEWDOW#068000",plain
|
||||
|
||||
!src "../common/src/constants.a"
|
||||
!src "../common/src/macros.a"
|
||||
|
||||
jmp start
|
||||
|
||||
compressed_data
|
||||
!bin "src/OBJ.X"
|
||||
FORWARD_DECRUNCHING = 1
|
||||
SHOW_PROGRESS_DURING_DECRUNCH = 0
|
||||
!src "../common/src/exodecrunch.a"
|
||||
|
||||
start
|
||||
+INIT_MACHINE
|
||||
!if * != $99CD {
|
||||
!serious "Adjust prelaunch to patch JSR at ", *, " to JMP"
|
||||
}
|
||||
jsr decrunch ; compressed data contains target address
|
||||
jmp $4000
|
||||
|
||||
get_crunched_byte
|
||||
lda compressed_data
|
||||
inc get_crunched_byte+1
|
||||
bne +
|
||||
inc get_crunched_byte+2
|
||||
+ rts
|
|
@ -27,8 +27,8 @@
|
|||
; DFB4..DFFF - (de)acceleration function
|
||||
;
|
||||
; MAIN MEMORY DURING SEARCH/BROWSE MODE
|
||||
; 6000..9FFF - search index
|
||||
; A000..BCFF - search cache
|
||||
; 6000..9FFF - search index (489 games = $3AEB/$4000)
|
||||
; A000..BCFF - search cache (489 games = $1957/$1D00)
|
||||
; BD00..BEFF - prefs buffer (used to write PREFS.CONF if cheat mode changes)
|
||||
; BF00..BFFF - ProRWTS glue (supports LoadIndexedFile)
|
||||
;
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15468090
|
||||
!be24 15514779
|
||||
!le16 5112
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15413369
|
||||
!le16 5695
|
||||
!be24 15459857
|
||||
!le16 5707
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15346289
|
||||
!be24 15392547
|
||||
!le16 4043
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15360536
|
||||
!be24 15406794
|
||||
!le16 4508
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15378696
|
||||
!le16 5840
|
||||
!be24 15425028
|
||||
!le16 5861
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15399545
|
||||
!le16 6466
|
||||
!be24 15445972
|
||||
!le16 6487
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
;
|
||||
; This file is automatically generated
|
||||
;
|
||||
!word 443
|
||||
!word 446
|
||||
|
|
|
@ -3,4 +3,4 @@
|
|||
;
|
||||
; This file is automatically generated
|
||||
;
|
||||
!word 486
|
||||
!word 489
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15473202
|
||||
!be24 15519891
|
||||
!le16 410
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15473956
|
||||
!be24 15520645
|
||||
!le16 449
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15474405
|
||||
!be24 15521094
|
||||
!le16 303
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 12321166
|
||||
!be24 12348895
|
||||
!le16 1652
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15421704
|
||||
!be24 15468204
|
||||
!le16 1640
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15473688
|
||||
!be24 15520377
|
||||
!le16 67
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15468031
|
||||
!be24 15514720
|
||||
!le16 59
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15466487
|
||||
!be24 15513176
|
||||
!le16 1426
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15450679
|
||||
!be24 15497299
|
||||
!le16 557
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15419064
|
||||
!be24 15465564
|
||||
!le16 2640
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15423702
|
||||
!le16 7358
|
||||
!be24 15470202
|
||||
!le16 7398
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15473612
|
||||
!be24 15520301
|
||||
!le16 76
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15467913
|
||||
!be24 15514602
|
||||
!le16 118
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15473755
|
||||
!be24 15520444
|
||||
!le16 201
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15451236
|
||||
!le16 4922
|
||||
!be24 15497856
|
||||
!le16 4951
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15456158
|
||||
!le16 1775
|
||||
!be24 15502807
|
||||
!le16 1802
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15457933
|
||||
!be24 15504609
|
||||
!le16 1181
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15459114
|
||||
!be24 15505790
|
||||
!le16 3421
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15462535
|
||||
!be24 15509211
|
||||
!le16 3359
|
||||
|
|
|
@ -4,5 +4,5 @@
|
|||
; This file is automatically generated
|
||||
;
|
||||
!byte 0
|
||||
!be24 15465894
|
||||
!be24 15512570
|
||||
!le16 479
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue