New Games
BIN
kontra/apple2/images/cleaned.gif
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
kontra/apple2/images/cleaned.jpeg
Normal file
After Width: | Height: | Size: 800 KiB |
BIN
kontra/apple2/images/kontrabant1map.jpg
Normal file
After Width: | Height: | Size: 568 KiB |
BIN
kontra/apple2/images/spectrum.jpeg
Normal file
After Width: | Height: | Size: 800 KiB |
BIN
kontra/apple2/images/title.hgr
Normal file
BIN
kontra/apple2/images/title.hgr.old
Normal file
BIN
kontra/apple2/images/title.lz4
Normal file
BIN
kontra/apple2/images/title.lz4.old
Normal file
2309
kontra/apple2/source/en/data.s
Normal file
2382
kontra/apple2/source/en/game.s
Normal file
410
kontra/apple2/source/en/kontra.s
Normal file
@@ -0,0 +1,410 @@
|
||||
*
|
||||
* Kontrabant
|
||||
*
|
||||
* (c) 1984, Radio Student
|
||||
* (c) 2023, Tomaz Stih
|
||||
* (c) 2024, Janez J. Starc & Brutal Deluxe Software
|
||||
*
|
||||
* See the MIT license @ https://github.com/iskra-delta/idp-quill/blob/main/LICENSE
|
||||
*
|
||||
|
||||
mx %11
|
||||
org $2000
|
||||
typ $FF
|
||||
dsk Kontra.System
|
||||
lst off
|
||||
|
||||
*------------------------------
|
||||
* EQUATES
|
||||
*------------------------------
|
||||
|
||||
*-------------- Zero page & friends
|
||||
|
||||
BASL = $28
|
||||
HPAG = $e6
|
||||
|
||||
src = $f8
|
||||
dst = src+2
|
||||
|
||||
*-------------- Game
|
||||
|
||||
ptrPREFIX = $280
|
||||
ptrRELOCATE = $1000
|
||||
HGRPAGE1 = $2000
|
||||
ptrTITLE = $4000
|
||||
theGAME = $2000
|
||||
proBUFFER = $bb00
|
||||
PRODOS = $bf00
|
||||
|
||||
*-------------- Softswitches
|
||||
|
||||
KBD = $C000
|
||||
CLR80VID = $C00C
|
||||
KBDSTROBE = $C010
|
||||
VBL = $C019
|
||||
MONOCOLOR = $C021
|
||||
NEWVIDEO = $C029
|
||||
VERTCNT = $C02E
|
||||
SPKR = $C030
|
||||
CYAREG = $C036
|
||||
TXTCLR = $C050
|
||||
TXTSET = $C051
|
||||
MIXCLR = $C052
|
||||
MIXSET = $C053
|
||||
TXTPAGE1 = $C054
|
||||
TXTPAGE2 = $C055
|
||||
LORES = $C056
|
||||
HIRES = $C057
|
||||
|
||||
*-------------- The firmware routines
|
||||
|
||||
HGR = $F3E2
|
||||
HPOSN = $F417
|
||||
INIT = $FB2F
|
||||
TABV = $FB5B
|
||||
SETPWRC = $FB6F
|
||||
HOME = $FC58
|
||||
WAIT = $FCA8
|
||||
RDKEY = $FD0C
|
||||
GETLN1 = $FD6F
|
||||
PRBYTE = $FDDA
|
||||
COUT = $FDED
|
||||
IDROUTINE = $FE1F
|
||||
SETNORM = $FE84
|
||||
SETKBD = $FE89
|
||||
BELL = $FF3A
|
||||
|
||||
*-----------------------------------
|
||||
* RELOCATE ME
|
||||
*-----------------------------------
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
theFROM lda ICI,y
|
||||
theTO sta ptrRELOCATE,y
|
||||
iny
|
||||
bne theFROM
|
||||
inc theFROM+2
|
||||
inc theTO+2
|
||||
dex
|
||||
bne theFROM
|
||||
jmp ptrRELOCATE
|
||||
|
||||
ICI
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD THE GAME
|
||||
*-----------------------------------
|
||||
|
||||
org ptrRELOCATE ; we are relocated
|
||||
|
||||
jsr PRODOS ; get the prefix
|
||||
dfb $c7
|
||||
da proGETPFX
|
||||
|
||||
jsr PRODOS ; set it
|
||||
dfb $c6
|
||||
da proGETPFX
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs in_notiigs
|
||||
|
||||
lda NEWVIDEO ; B/W hi-res
|
||||
sta oldNEWVIDEO
|
||||
ora #%0010_0000
|
||||
sta NEWVIDEO
|
||||
|
||||
lda MONOCOLOR ; disables color
|
||||
sta oldMONOCOLOR
|
||||
ora #%1000_0000
|
||||
sta MONOCOLOR
|
||||
|
||||
in_notiigs lda #>HGRPAGE1
|
||||
sta HPAG
|
||||
jsr HGR
|
||||
lda MIXCLR
|
||||
|
||||
*--- Load title picture
|
||||
|
||||
lda #>ptrTITLE
|
||||
ldy #<pTITLE
|
||||
ldx #>pTITLE
|
||||
jsr loadFILE
|
||||
jsr unpackLZ4
|
||||
|
||||
*--- Wait
|
||||
|
||||
ldx #250
|
||||
platform_pause lda #86 ; 0.02s
|
||||
jsr WAIT
|
||||
lda KBD
|
||||
bmi pp_exit
|
||||
dex
|
||||
bne platform_pause
|
||||
pp_exit sta KBDSTROBE
|
||||
|
||||
*--- Set text mode
|
||||
|
||||
sta CLR80VID
|
||||
jsr INIT ; text screen
|
||||
jsr SETNORM ; set normal text mode
|
||||
jsr SETKBD ; reset input to keyboard
|
||||
jsr HOME ; home cursor and clear
|
||||
|
||||
*--- Please wait
|
||||
|
||||
lda #11
|
||||
jsr TABV
|
||||
|
||||
ldx #0
|
||||
ldy #14 ; (40-11)/2 = 14
|
||||
]lp lda strWAIT,x
|
||||
beq endWAIT
|
||||
sta (BASL),y
|
||||
inx
|
||||
iny
|
||||
bne ]lp
|
||||
|
||||
*--- Load game
|
||||
|
||||
endWAIT lda #>theGAME
|
||||
ldy #<pGAME
|
||||
ldx #>pGAME
|
||||
jsr loadFILE
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs out_notiigs
|
||||
|
||||
lda oldNEWVIDEO ; B/W hi-res
|
||||
sta NEWVIDEO
|
||||
|
||||
lda oldMONOCOLOR ; disables color
|
||||
sta MONOCOLOR
|
||||
|
||||
out_notiigs jmp theGAME
|
||||
|
||||
*--- Data
|
||||
|
||||
strWAIT asc "PLEASE WAIT"00
|
||||
|
||||
oldMONOCOLOR ds 2 ; $C027
|
||||
oldNEWVIDEO ds 2 ; $C029
|
||||
|
||||
*--------------------------------------
|
||||
* unpackLZ4
|
||||
*
|
||||
* Unpack a LZ4 image
|
||||
* Code by Peter Ferrie
|
||||
* Used with permission
|
||||
* Adapted for the game engine
|
||||
*
|
||||
*--------------------------------------
|
||||
|
||||
unpackLZ4 ldy #<ptrTITLE ; src
|
||||
ldx #>ptrTITLE
|
||||
|
||||
tya ; end
|
||||
clc
|
||||
adc proGETEOF+2
|
||||
sta lz4end
|
||||
txa
|
||||
adc proGETEOF+3
|
||||
sta lz4end+1
|
||||
|
||||
lda #<HGRPAGE1 ; dest
|
||||
sta dst
|
||||
lda #>HGRPAGE1
|
||||
sta dst+1
|
||||
|
||||
tya ; move to data
|
||||
clc
|
||||
adc #16
|
||||
sta src
|
||||
txa
|
||||
adc #0
|
||||
sta src+1
|
||||
|
||||
ldy #0 ; src/dst index
|
||||
sty count
|
||||
|
||||
parsetoken jsr getsrc
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
beq copymatches
|
||||
jsr buildcount
|
||||
tax
|
||||
jsr docopy
|
||||
|
||||
lda src ; did we reach the end?
|
||||
cmp lz4end
|
||||
lda src+1
|
||||
sbc lz4end+1
|
||||
bcs lz4done
|
||||
|
||||
copymatches jsr getsrc
|
||||
sta delta
|
||||
jsr getsrc
|
||||
sta delta+1
|
||||
pla
|
||||
and #$0f
|
||||
jsr buildcount
|
||||
clc
|
||||
adc #4
|
||||
tax
|
||||
bcc copymatches1
|
||||
inc count+1
|
||||
copymatches1 lda src+1
|
||||
pha
|
||||
lda src
|
||||
pha
|
||||
sec
|
||||
lda dst
|
||||
sbc delta
|
||||
sta src
|
||||
lda dst+1
|
||||
sbc delta+1
|
||||
sta src+1
|
||||
jsr docopy
|
||||
pla
|
||||
sta src
|
||||
pla
|
||||
sta src+1
|
||||
jmp parsetoken
|
||||
|
||||
lz4done pla ; yes, exit!
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
docopy jsr getput
|
||||
dex
|
||||
bne docopy
|
||||
dec count+1
|
||||
bne docopy
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
buildcount ldx #1
|
||||
stx count+1
|
||||
cmp #$0f
|
||||
bne buildcount2
|
||||
]lp sta count
|
||||
jsr getsrc
|
||||
tax
|
||||
clc
|
||||
adc count
|
||||
bcc buildcount1
|
||||
inc count+1
|
||||
buildcount1 inx
|
||||
beq ]lp
|
||||
buildcount2 rts
|
||||
|
||||
*---
|
||||
|
||||
getput jsr getsrc
|
||||
|
||||
putdst sta (dst), y
|
||||
inc dst
|
||||
bne putdst1
|
||||
inc dst+1
|
||||
putdst1 rts
|
||||
|
||||
*---
|
||||
|
||||
getsrc lda (src), y
|
||||
inc src
|
||||
bne getsrc1
|
||||
inc src+1
|
||||
getsrc1 rts
|
||||
|
||||
*--- Data
|
||||
|
||||
lz4end ds 2
|
||||
count ds 2
|
||||
delta ds 2
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD A FILE
|
||||
*-----------------------------------
|
||||
|
||||
loadFILE sta proREAD+3
|
||||
sty proOPEN+1
|
||||
stx proOPEN+2
|
||||
|
||||
jsr PRODOS
|
||||
dfb $c8
|
||||
da proOPEN
|
||||
bcs quitME
|
||||
|
||||
lda proOPEN+5 ; zou, on prend l'ID
|
||||
sta proGETEOF+1
|
||||
sta proREAD+1
|
||||
sta proCLOSE+1
|
||||
|
||||
jsr PRODOS ; longueur du fichier
|
||||
dfb $d1
|
||||
da proGETEOF
|
||||
bcs quitME
|
||||
|
||||
lda proGETEOF+2
|
||||
sta proREAD+4
|
||||
lda proGETEOF+3
|
||||
sta proREAD+5
|
||||
|
||||
jsr PRODOS ; lecture du fichier
|
||||
dfb $ca
|
||||
da proREAD
|
||||
bcs quitME
|
||||
|
||||
jsr PRODOS ; fermeture du fichier
|
||||
dfb $cc
|
||||
da proCLOSE
|
||||
bcs quitME
|
||||
|
||||
rts
|
||||
|
||||
quitME jsr PRODOS ; exit
|
||||
dfb $65
|
||||
da proQUIT
|
||||
|
||||
brk $bd ; on ne se refait pas ;-)
|
||||
|
||||
*--- Data
|
||||
|
||||
proQUIT dfb $4
|
||||
ds 1
|
||||
ds 2
|
||||
ds 1
|
||||
ds 2
|
||||
|
||||
proGETPFX dfb $1
|
||||
da ptrPREFIX
|
||||
|
||||
proOPEN dfb $3
|
||||
da pTITLE ; pathname (par d<>faut, le moteur)
|
||||
da proBUFFER ; io_buffer
|
||||
ds 1 ; ref_num
|
||||
|
||||
proREAD dfb $4
|
||||
ds 1 ; ref_num
|
||||
da ptrTITLE ; data_buffer
|
||||
ds 2 ; request_count
|
||||
ds 2 ; transfer_count
|
||||
|
||||
proCLOSE dfb $1
|
||||
ds 1 ; ref_num
|
||||
|
||||
proGETEOF dfb $2
|
||||
ds 1 ; ref_num
|
||||
ds 3 ; eof
|
||||
|
||||
pTITLE str 'data/title.lz4'
|
||||
pGAME str 'game'
|
||||
|
||||
*--- The end
|
2309
kontra/apple2/source/fr/data.s
Normal file
2382
kontra/apple2/source/fr/game.s
Normal file
410
kontra/apple2/source/fr/kontra.s
Normal file
@@ -0,0 +1,410 @@
|
||||
*
|
||||
* Kontrabant
|
||||
*
|
||||
* (c) 1984, Radio Student
|
||||
* (c) 2023, Tomaz Stih
|
||||
* (c) 2024, Janez J. Starc & Brutal Deluxe Software
|
||||
*
|
||||
* See the MIT license @ https://github.com/iskra-delta/idp-quill/blob/main/LICENSE
|
||||
*
|
||||
|
||||
mx %11
|
||||
org $2000
|
||||
typ $FF
|
||||
dsk Kontra.System
|
||||
lst off
|
||||
|
||||
*------------------------------
|
||||
* EQUATES
|
||||
*------------------------------
|
||||
|
||||
*-------------- Zero page & friends
|
||||
|
||||
BASL = $28
|
||||
HPAG = $e6
|
||||
|
||||
src = $f8
|
||||
dst = src+2
|
||||
|
||||
*-------------- Game
|
||||
|
||||
ptrPREFIX = $280
|
||||
ptrRELOCATE = $1000
|
||||
HGRPAGE1 = $2000
|
||||
ptrTITLE = $4000
|
||||
theGAME = $2000
|
||||
proBUFFER = $bb00
|
||||
PRODOS = $bf00
|
||||
|
||||
*-------------- Softswitches
|
||||
|
||||
KBD = $C000
|
||||
CLR80VID = $C00C
|
||||
KBDSTROBE = $C010
|
||||
VBL = $C019
|
||||
MONOCOLOR = $C021
|
||||
NEWVIDEO = $C029
|
||||
VERTCNT = $C02E
|
||||
SPKR = $C030
|
||||
CYAREG = $C036
|
||||
TXTCLR = $C050
|
||||
TXTSET = $C051
|
||||
MIXCLR = $C052
|
||||
MIXSET = $C053
|
||||
TXTPAGE1 = $C054
|
||||
TXTPAGE2 = $C055
|
||||
LORES = $C056
|
||||
HIRES = $C057
|
||||
|
||||
*-------------- The firmware routines
|
||||
|
||||
HGR = $F3E2
|
||||
HPOSN = $F417
|
||||
INIT = $FB2F
|
||||
TABV = $FB5B
|
||||
SETPWRC = $FB6F
|
||||
HOME = $FC58
|
||||
WAIT = $FCA8
|
||||
RDKEY = $FD0C
|
||||
GETLN1 = $FD6F
|
||||
PRBYTE = $FDDA
|
||||
COUT = $FDED
|
||||
IDROUTINE = $FE1F
|
||||
SETNORM = $FE84
|
||||
SETKBD = $FE89
|
||||
BELL = $FF3A
|
||||
|
||||
*-----------------------------------
|
||||
* RELOCATE ME
|
||||
*-----------------------------------
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
theFROM lda ICI,y
|
||||
theTO sta ptrRELOCATE,y
|
||||
iny
|
||||
bne theFROM
|
||||
inc theFROM+2
|
||||
inc theTO+2
|
||||
dex
|
||||
bne theFROM
|
||||
jmp ptrRELOCATE
|
||||
|
||||
ICI
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD THE GAME
|
||||
*-----------------------------------
|
||||
|
||||
org ptrRELOCATE ; we are relocated
|
||||
|
||||
jsr PRODOS ; get the prefix
|
||||
dfb $c7
|
||||
da proGETPFX
|
||||
|
||||
jsr PRODOS ; set it
|
||||
dfb $c6
|
||||
da proGETPFX
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs in_notiigs
|
||||
|
||||
lda NEWVIDEO ; B/W hi-res
|
||||
sta oldNEWVIDEO
|
||||
ora #%0010_0000
|
||||
sta NEWVIDEO
|
||||
|
||||
lda MONOCOLOR ; disables color
|
||||
sta oldMONOCOLOR
|
||||
ora #%1000_0000
|
||||
sta MONOCOLOR
|
||||
|
||||
in_notiigs lda #>HGRPAGE1
|
||||
sta HPAG
|
||||
jsr HGR
|
||||
lda MIXCLR
|
||||
|
||||
*--- Load title picture
|
||||
|
||||
lda #>ptrTITLE
|
||||
ldy #<pTITLE
|
||||
ldx #>pTITLE
|
||||
jsr loadFILE
|
||||
jsr unpackLZ4
|
||||
|
||||
*--- Wait
|
||||
|
||||
ldx #250
|
||||
platform_pause lda #86 ; 0.02s
|
||||
jsr WAIT
|
||||
lda KBD
|
||||
bmi pp_exit
|
||||
dex
|
||||
bne platform_pause
|
||||
pp_exit sta KBDSTROBE
|
||||
|
||||
*--- Set text mode
|
||||
|
||||
sta CLR80VID
|
||||
jsr INIT ; text screen
|
||||
jsr SETNORM ; set normal text mode
|
||||
jsr SETKBD ; reset input to keyboard
|
||||
jsr HOME ; home cursor and clear
|
||||
|
||||
*--- Please wait
|
||||
|
||||
lda #11
|
||||
jsr TABV
|
||||
|
||||
ldx #0
|
||||
ldy #11 ; (40-18)/2 = 11
|
||||
]lp lda strWAIT,x
|
||||
beq endWAIT
|
||||
sta (BASL),y
|
||||
inx
|
||||
iny
|
||||
bne ]lp
|
||||
|
||||
*--- Load game
|
||||
|
||||
endWAIT lda #>theGAME
|
||||
ldy #<pGAME
|
||||
ldx #>pGAME
|
||||
jsr loadFILE
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs out_notiigs
|
||||
|
||||
lda oldNEWVIDEO ; B/W hi-res
|
||||
sta NEWVIDEO
|
||||
|
||||
lda oldMONOCOLOR ; disables color
|
||||
sta MONOCOLOR
|
||||
|
||||
out_notiigs jmp theGAME
|
||||
|
||||
*--- Data
|
||||
|
||||
strWAIT asc "VEUILLEZ PATIENTER"00
|
||||
|
||||
oldMONOCOLOR ds 2 ; $C027
|
||||
oldNEWVIDEO ds 2 ; $C029
|
||||
|
||||
*--------------------------------------
|
||||
* unpackLZ4
|
||||
*
|
||||
* Unpack a LZ4 image
|
||||
* Code by Peter Ferrie
|
||||
* Used with permission
|
||||
* Adapted for the game engine
|
||||
*
|
||||
*--------------------------------------
|
||||
|
||||
unpackLZ4 ldy #<ptrTITLE ; src
|
||||
ldx #>ptrTITLE
|
||||
|
||||
tya ; end
|
||||
clc
|
||||
adc proGETEOF+2
|
||||
sta lz4end
|
||||
txa
|
||||
adc proGETEOF+3
|
||||
sta lz4end+1
|
||||
|
||||
lda #<HGRPAGE1 ; dest
|
||||
sta dst
|
||||
lda #>HGRPAGE1
|
||||
sta dst+1
|
||||
|
||||
tya ; move to data
|
||||
clc
|
||||
adc #16
|
||||
sta src
|
||||
txa
|
||||
adc #0
|
||||
sta src+1
|
||||
|
||||
ldy #0 ; src/dst index
|
||||
sty count
|
||||
|
||||
parsetoken jsr getsrc
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
beq copymatches
|
||||
jsr buildcount
|
||||
tax
|
||||
jsr docopy
|
||||
|
||||
lda src ; did we reach the end?
|
||||
cmp lz4end
|
||||
lda src+1
|
||||
sbc lz4end+1
|
||||
bcs lz4done
|
||||
|
||||
copymatches jsr getsrc
|
||||
sta delta
|
||||
jsr getsrc
|
||||
sta delta+1
|
||||
pla
|
||||
and #$0f
|
||||
jsr buildcount
|
||||
clc
|
||||
adc #4
|
||||
tax
|
||||
bcc copymatches1
|
||||
inc count+1
|
||||
copymatches1 lda src+1
|
||||
pha
|
||||
lda src
|
||||
pha
|
||||
sec
|
||||
lda dst
|
||||
sbc delta
|
||||
sta src
|
||||
lda dst+1
|
||||
sbc delta+1
|
||||
sta src+1
|
||||
jsr docopy
|
||||
pla
|
||||
sta src
|
||||
pla
|
||||
sta src+1
|
||||
jmp parsetoken
|
||||
|
||||
lz4done pla ; yes, exit!
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
docopy jsr getput
|
||||
dex
|
||||
bne docopy
|
||||
dec count+1
|
||||
bne docopy
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
buildcount ldx #1
|
||||
stx count+1
|
||||
cmp #$0f
|
||||
bne buildcount2
|
||||
]lp sta count
|
||||
jsr getsrc
|
||||
tax
|
||||
clc
|
||||
adc count
|
||||
bcc buildcount1
|
||||
inc count+1
|
||||
buildcount1 inx
|
||||
beq ]lp
|
||||
buildcount2 rts
|
||||
|
||||
*---
|
||||
|
||||
getput jsr getsrc
|
||||
|
||||
putdst sta (dst), y
|
||||
inc dst
|
||||
bne putdst1
|
||||
inc dst+1
|
||||
putdst1 rts
|
||||
|
||||
*---
|
||||
|
||||
getsrc lda (src), y
|
||||
inc src
|
||||
bne getsrc1
|
||||
inc src+1
|
||||
getsrc1 rts
|
||||
|
||||
*--- Data
|
||||
|
||||
lz4end ds 2
|
||||
count ds 2
|
||||
delta ds 2
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD A FILE
|
||||
*-----------------------------------
|
||||
|
||||
loadFILE sta proREAD+3
|
||||
sty proOPEN+1
|
||||
stx proOPEN+2
|
||||
|
||||
jsr PRODOS
|
||||
dfb $c8
|
||||
da proOPEN
|
||||
bcs quitME
|
||||
|
||||
lda proOPEN+5 ; zou, on prend l'ID
|
||||
sta proGETEOF+1
|
||||
sta proREAD+1
|
||||
sta proCLOSE+1
|
||||
|
||||
jsr PRODOS ; longueur du fichier
|
||||
dfb $d1
|
||||
da proGETEOF
|
||||
bcs quitME
|
||||
|
||||
lda proGETEOF+2
|
||||
sta proREAD+4
|
||||
lda proGETEOF+3
|
||||
sta proREAD+5
|
||||
|
||||
jsr PRODOS ; lecture du fichier
|
||||
dfb $ca
|
||||
da proREAD
|
||||
bcs quitME
|
||||
|
||||
jsr PRODOS ; fermeture du fichier
|
||||
dfb $cc
|
||||
da proCLOSE
|
||||
bcs quitME
|
||||
|
||||
rts
|
||||
|
||||
quitME jsr PRODOS ; exit
|
||||
dfb $65
|
||||
da proQUIT
|
||||
|
||||
brk $bd ; on ne se refait pas ;-)
|
||||
|
||||
*--- Data
|
||||
|
||||
proQUIT dfb $4
|
||||
ds 1
|
||||
ds 2
|
||||
ds 1
|
||||
ds 2
|
||||
|
||||
proGETPFX dfb $1
|
||||
da ptrPREFIX
|
||||
|
||||
proOPEN dfb $3
|
||||
da pTITLE ; pathname (par d<>faut, le moteur)
|
||||
da proBUFFER ; io_buffer
|
||||
ds 1 ; ref_num
|
||||
|
||||
proREAD dfb $4
|
||||
ds 1 ; ref_num
|
||||
da ptrTITLE ; data_buffer
|
||||
ds 2 ; request_count
|
||||
ds 2 ; transfer_count
|
||||
|
||||
proCLOSE dfb $1
|
||||
ds 1 ; ref_num
|
||||
|
||||
proGETEOF dfb $2
|
||||
ds 1 ; ref_num
|
||||
ds 3 ; eof
|
||||
|
||||
pTITLE str 'data/title.lz4'
|
||||
pGAME str 'game'
|
||||
|
||||
*--- The end
|
2309
kontra/apple2/source/si/data.s
Normal file
2382
kontra/apple2/source/si/game.s
Normal file
410
kontra/apple2/source/si/kontra.s
Normal file
@@ -0,0 +1,410 @@
|
||||
*
|
||||
* Kontrabant
|
||||
*
|
||||
* (c) 1984, Radio Student
|
||||
* (c) 2023, Tomaz Stih
|
||||
* (c) 2024, Janez J. Starc & Brutal Deluxe Software
|
||||
*
|
||||
* See the MIT license @ https://github.com/iskra-delta/idp-quill/blob/main/LICENSE
|
||||
*
|
||||
|
||||
mx %11
|
||||
org $2000
|
||||
typ $FF
|
||||
dsk Kontra.System
|
||||
lst off
|
||||
|
||||
*------------------------------
|
||||
* EQUATES
|
||||
*------------------------------
|
||||
|
||||
*-------------- Zero page & friends
|
||||
|
||||
BASL = $28
|
||||
HPAG = $e6
|
||||
|
||||
src = $f8
|
||||
dst = src+2
|
||||
|
||||
*-------------- Game
|
||||
|
||||
ptrPREFIX = $280
|
||||
ptrRELOCATE = $1000
|
||||
HGRPAGE1 = $2000
|
||||
ptrTITLE = $4000
|
||||
theGAME = $2000
|
||||
proBUFFER = $bb00
|
||||
PRODOS = $bf00
|
||||
|
||||
*-------------- Softswitches
|
||||
|
||||
KBD = $C000
|
||||
CLR80VID = $C00C
|
||||
KBDSTROBE = $C010
|
||||
VBL = $C019
|
||||
MONOCOLOR = $C021
|
||||
NEWVIDEO = $C029
|
||||
VERTCNT = $C02E
|
||||
SPKR = $C030
|
||||
CYAREG = $C036
|
||||
TXTCLR = $C050
|
||||
TXTSET = $C051
|
||||
MIXCLR = $C052
|
||||
MIXSET = $C053
|
||||
TXTPAGE1 = $C054
|
||||
TXTPAGE2 = $C055
|
||||
LORES = $C056
|
||||
HIRES = $C057
|
||||
|
||||
*-------------- The firmware routines
|
||||
|
||||
HGR = $F3E2
|
||||
HPOSN = $F417
|
||||
INIT = $FB2F
|
||||
TABV = $FB5B
|
||||
SETPWRC = $FB6F
|
||||
HOME = $FC58
|
||||
WAIT = $FCA8
|
||||
RDKEY = $FD0C
|
||||
GETLN1 = $FD6F
|
||||
PRBYTE = $FDDA
|
||||
COUT = $FDED
|
||||
IDROUTINE = $FE1F
|
||||
SETNORM = $FE84
|
||||
SETKBD = $FE89
|
||||
BELL = $FF3A
|
||||
|
||||
*-----------------------------------
|
||||
* RELOCATE ME
|
||||
*-----------------------------------
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
theFROM lda ICI,y
|
||||
theTO sta ptrRELOCATE,y
|
||||
iny
|
||||
bne theFROM
|
||||
inc theFROM+2
|
||||
inc theTO+2
|
||||
dex
|
||||
bne theFROM
|
||||
jmp ptrRELOCATE
|
||||
|
||||
ICI
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD THE GAME
|
||||
*-----------------------------------
|
||||
|
||||
org ptrRELOCATE ; we are relocated
|
||||
|
||||
jsr PRODOS ; get the prefix
|
||||
dfb $c7
|
||||
da proGETPFX
|
||||
|
||||
jsr PRODOS ; set it
|
||||
dfb $c6
|
||||
da proGETPFX
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs in_notiigs
|
||||
|
||||
lda NEWVIDEO ; B/W hi-res
|
||||
sta oldNEWVIDEO
|
||||
ora #%0010_0000
|
||||
sta NEWVIDEO
|
||||
|
||||
lda MONOCOLOR ; disables color
|
||||
sta oldMONOCOLOR
|
||||
ora #%1000_0000
|
||||
sta MONOCOLOR
|
||||
|
||||
in_notiigs lda #>HGRPAGE1
|
||||
sta HPAG
|
||||
jsr HGR
|
||||
lda MIXCLR
|
||||
|
||||
*--- Load title picture
|
||||
|
||||
lda #>ptrTITLE
|
||||
ldy #<pTITLE
|
||||
ldx #>pTITLE
|
||||
jsr loadFILE
|
||||
jsr unpackLZ4
|
||||
|
||||
*--- Wait
|
||||
|
||||
ldx #250
|
||||
platform_pause lda #86 ; 0.02s
|
||||
jsr WAIT
|
||||
lda KBD
|
||||
bmi pp_exit
|
||||
dex
|
||||
bne platform_pause
|
||||
pp_exit sta KBDSTROBE
|
||||
|
||||
*--- Set text mode
|
||||
|
||||
sta CLR80VID
|
||||
jsr INIT ; text screen
|
||||
jsr SETNORM ; set normal text mode
|
||||
jsr SETKBD ; reset input to keyboard
|
||||
jsr HOME ; home cursor and clear
|
||||
|
||||
*--- Please wait
|
||||
|
||||
lda #11
|
||||
jsr TABV
|
||||
|
||||
ldx #0
|
||||
ldy #12 ; (40-16)/2 = 12
|
||||
]lp lda strWAIT,x
|
||||
beq endWAIT
|
||||
sta (BASL),y
|
||||
inx
|
||||
iny
|
||||
bne ]lp
|
||||
|
||||
*--- Load game
|
||||
|
||||
endWAIT lda #>theGAME
|
||||
ldy #<pGAME
|
||||
ldx #>pGAME
|
||||
jsr loadFILE
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs out_notiigs
|
||||
|
||||
lda oldNEWVIDEO ; B/W hi-res
|
||||
sta NEWVIDEO
|
||||
|
||||
lda oldMONOCOLOR ; disables color
|
||||
sta MONOCOLOR
|
||||
|
||||
out_notiigs jmp theGAME
|
||||
|
||||
*--- Data
|
||||
|
||||
strWAIT asc "PROSIM POCAKAJTE"00
|
||||
|
||||
oldMONOCOLOR ds 2 ; $C027
|
||||
oldNEWVIDEO ds 2 ; $C029
|
||||
|
||||
*--------------------------------------
|
||||
* unpackLZ4
|
||||
*
|
||||
* Unpack a LZ4 image
|
||||
* Code by Peter Ferrie
|
||||
* Used with permission
|
||||
* Adapted for the game engine
|
||||
*
|
||||
*--------------------------------------
|
||||
|
||||
unpackLZ4 ldy #<ptrTITLE ; src
|
||||
ldx #>ptrTITLE
|
||||
|
||||
tya ; end
|
||||
clc
|
||||
adc proGETEOF+2
|
||||
sta lz4end
|
||||
txa
|
||||
adc proGETEOF+3
|
||||
sta lz4end+1
|
||||
|
||||
lda #<HGRPAGE1 ; dest
|
||||
sta dst
|
||||
lda #>HGRPAGE1
|
||||
sta dst+1
|
||||
|
||||
tya ; move to data
|
||||
clc
|
||||
adc #16
|
||||
sta src
|
||||
txa
|
||||
adc #0
|
||||
sta src+1
|
||||
|
||||
ldy #0 ; src/dst index
|
||||
sty count
|
||||
|
||||
parsetoken jsr getsrc
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
beq copymatches
|
||||
jsr buildcount
|
||||
tax
|
||||
jsr docopy
|
||||
|
||||
lda src ; did we reach the end?
|
||||
cmp lz4end
|
||||
lda src+1
|
||||
sbc lz4end+1
|
||||
bcs lz4done
|
||||
|
||||
copymatches jsr getsrc
|
||||
sta delta
|
||||
jsr getsrc
|
||||
sta delta+1
|
||||
pla
|
||||
and #$0f
|
||||
jsr buildcount
|
||||
clc
|
||||
adc #4
|
||||
tax
|
||||
bcc copymatches1
|
||||
inc count+1
|
||||
copymatches1 lda src+1
|
||||
pha
|
||||
lda src
|
||||
pha
|
||||
sec
|
||||
lda dst
|
||||
sbc delta
|
||||
sta src
|
||||
lda dst+1
|
||||
sbc delta+1
|
||||
sta src+1
|
||||
jsr docopy
|
||||
pla
|
||||
sta src
|
||||
pla
|
||||
sta src+1
|
||||
jmp parsetoken
|
||||
|
||||
lz4done pla ; yes, exit!
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
docopy jsr getput
|
||||
dex
|
||||
bne docopy
|
||||
dec count+1
|
||||
bne docopy
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
buildcount ldx #1
|
||||
stx count+1
|
||||
cmp #$0f
|
||||
bne buildcount2
|
||||
]lp sta count
|
||||
jsr getsrc
|
||||
tax
|
||||
clc
|
||||
adc count
|
||||
bcc buildcount1
|
||||
inc count+1
|
||||
buildcount1 inx
|
||||
beq ]lp
|
||||
buildcount2 rts
|
||||
|
||||
*---
|
||||
|
||||
getput jsr getsrc
|
||||
|
||||
putdst sta (dst), y
|
||||
inc dst
|
||||
bne putdst1
|
||||
inc dst+1
|
||||
putdst1 rts
|
||||
|
||||
*---
|
||||
|
||||
getsrc lda (src), y
|
||||
inc src
|
||||
bne getsrc1
|
||||
inc src+1
|
||||
getsrc1 rts
|
||||
|
||||
*--- Data
|
||||
|
||||
lz4end ds 2
|
||||
count ds 2
|
||||
delta ds 2
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD A FILE
|
||||
*-----------------------------------
|
||||
|
||||
loadFILE sta proREAD+3
|
||||
sty proOPEN+1
|
||||
stx proOPEN+2
|
||||
|
||||
jsr PRODOS
|
||||
dfb $c8
|
||||
da proOPEN
|
||||
bcs quitME
|
||||
|
||||
lda proOPEN+5 ; zou, on prend l'ID
|
||||
sta proGETEOF+1
|
||||
sta proREAD+1
|
||||
sta proCLOSE+1
|
||||
|
||||
jsr PRODOS ; longueur du fichier
|
||||
dfb $d1
|
||||
da proGETEOF
|
||||
bcs quitME
|
||||
|
||||
lda proGETEOF+2
|
||||
sta proREAD+4
|
||||
lda proGETEOF+3
|
||||
sta proREAD+5
|
||||
|
||||
jsr PRODOS ; lecture du fichier
|
||||
dfb $ca
|
||||
da proREAD
|
||||
bcs quitME
|
||||
|
||||
jsr PRODOS ; fermeture du fichier
|
||||
dfb $cc
|
||||
da proCLOSE
|
||||
bcs quitME
|
||||
|
||||
rts
|
||||
|
||||
quitME jsr PRODOS ; exit
|
||||
dfb $65
|
||||
da proQUIT
|
||||
|
||||
brk $bd ; on ne se refait pas ;-)
|
||||
|
||||
*--- Data
|
||||
|
||||
proQUIT dfb $4
|
||||
ds 1
|
||||
ds 2
|
||||
ds 1
|
||||
ds 2
|
||||
|
||||
proGETPFX dfb $1
|
||||
da ptrPREFIX
|
||||
|
||||
proOPEN dfb $3
|
||||
da pTITLE ; pathname (par d<>faut, le moteur)
|
||||
da proBUFFER ; io_buffer
|
||||
ds 1 ; ref_num
|
||||
|
||||
proREAD dfb $4
|
||||
ds 1 ; ref_num
|
||||
da ptrTITLE ; data_buffer
|
||||
ds 2 ; request_count
|
||||
ds 2 ; transfer_count
|
||||
|
||||
proCLOSE dfb $1
|
||||
ds 1 ; ref_num
|
||||
|
||||
proGETEOF dfb $2
|
||||
ds 1 ; ref_num
|
||||
ds 3 ; eof
|
||||
|
||||
pTITLE str 'data/title.lz4'
|
||||
pGAME str 'game'
|
||||
|
||||
*--- The end
|
BIN
kontra2/apple2/images/Kontrabant2.gif
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
kontra2/apple2/images/Kontrabant2.scr
Normal file
BIN
kontra2/apple2/images/kontra2.jpg
Normal file
After Width: | Height: | Size: 198 KiB |
BIN
kontra2/apple2/images/kontra2b.jpg
Normal file
After Width: | Height: | Size: 114 KiB |
BIN
kontra2/apple2/images/kontra2c.jpg
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
kontra2/apple2/images/kontra2d.jpg
Normal file
After Width: | Height: | Size: 188 KiB |
BIN
kontra2/apple2/images/kontra2e.jpg
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
kontra2/apple2/images/kontra2f.jpg
Normal file
After Width: | Height: | Size: 159 KiB |
BIN
kontra2/apple2/images/kontra2g.jpg
Normal file
After Width: | Height: | Size: 213 KiB |
BIN
kontra2/apple2/images/kontrabant2map.jpg
Normal file
After Width: | Height: | Size: 447 KiB |
BIN
kontra2/apple2/lz4/kontra03.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra04.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra05.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra07.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra08.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra12.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra27.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra33.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra36.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra37.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra41.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra42.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra43.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra45.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra46.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra48.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra49.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra50.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra54.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra56.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra58.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra60.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra61.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra66.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra69.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra70.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra84.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra85.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra87.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra89.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra91.lz4
Normal file
BIN
kontra2/apple2/lz4/kontra98.lz4
Normal file
BIN
kontra2/apple2/lz4/title.lz4
Normal file
BIN
kontra2/apple2/lz4/title2.lz4
Normal file
BIN
kontra2/apple2/pics/kontra03.pic
Normal file
BIN
kontra2/apple2/pics/kontra04.pic
Normal file
BIN
kontra2/apple2/pics/kontra05.pic
Normal file
BIN
kontra2/apple2/pics/kontra07.pic
Normal file
BIN
kontra2/apple2/pics/kontra08.pic
Normal file
BIN
kontra2/apple2/pics/kontra12.pic
Normal file
BIN
kontra2/apple2/pics/kontra27.pic
Normal file
BIN
kontra2/apple2/pics/kontra33.pic
Normal file
BIN
kontra2/apple2/pics/kontra36.pic
Normal file
BIN
kontra2/apple2/pics/kontra37.pic
Normal file
BIN
kontra2/apple2/pics/kontra41.pic
Normal file
BIN
kontra2/apple2/pics/kontra42.pic
Normal file
BIN
kontra2/apple2/pics/kontra43.pic
Normal file
BIN
kontra2/apple2/pics/kontra45.pic
Normal file
BIN
kontra2/apple2/pics/kontra46.pic
Normal file
BIN
kontra2/apple2/pics/kontra48.pic
Normal file
BIN
kontra2/apple2/pics/kontra49.pic
Normal file
BIN
kontra2/apple2/pics/kontra50.pic
Normal file
BIN
kontra2/apple2/pics/kontra54.pic
Normal file
BIN
kontra2/apple2/pics/kontra56.pic
Normal file
BIN
kontra2/apple2/pics/kontra58.pic
Normal file
BIN
kontra2/apple2/pics/kontra60.pic
Normal file
BIN
kontra2/apple2/pics/kontra61.pic
Normal file
BIN
kontra2/apple2/pics/kontra66.pic
Normal file
BIN
kontra2/apple2/pics/kontra69.pic
Normal file
BIN
kontra2/apple2/pics/kontra70.pic
Normal file
BIN
kontra2/apple2/pics/kontra84.pic
Normal file
BIN
kontra2/apple2/pics/kontra85.pic
Normal file
BIN
kontra2/apple2/pics/kontra87.pic
Normal file
BIN
kontra2/apple2/pics/kontra89.pic
Normal file
BIN
kontra2/apple2/pics/kontra91.pic
Normal file
BIN
kontra2/apple2/pics/kontra98.pic
Normal file
BIN
kontra2/apple2/pics/title.pic
Normal file
BIN
kontra2/apple2/pics/title2.pic
Normal file
1771
kontra2/apple2/sources/en/data.s
Normal file
2789
kontra2/apple2/sources/en/game.s
Normal file
367
kontra2/apple2/sources/en/kontra.s
Normal file
@@ -0,0 +1,367 @@
|
||||
*
|
||||
* Kontrabant 2
|
||||
*
|
||||
* (c) 1984, Radio Student
|
||||
* (c) 2023, Tomaz Stih
|
||||
* (c) 2024, Janez J. Starc & Brutal Deluxe Software
|
||||
*
|
||||
* See the MIT license @ https://github.com/iskra-delta/idp-quill/blob/main/LICENSE
|
||||
*
|
||||
|
||||
mx %11
|
||||
org $2000
|
||||
typ $FF
|
||||
dsk Kontra.System
|
||||
lst off
|
||||
|
||||
*------------------------------
|
||||
* EQUATES
|
||||
*------------------------------
|
||||
|
||||
*-------------- Zero page & friends
|
||||
|
||||
HPAG = $e6
|
||||
|
||||
src = $f8
|
||||
dst = src+2
|
||||
|
||||
*-------------- Game
|
||||
|
||||
ptrPREFIX = $280
|
||||
ptrRELOCATE = $1000
|
||||
HGRPAGE1 = $2000
|
||||
ptrTITLE = $4000
|
||||
theGAME = $4000
|
||||
proBUFFER = $bb00
|
||||
PRODOS = $bf00
|
||||
|
||||
*-------------- Softswitches
|
||||
|
||||
KBD = $C000
|
||||
CLR80VID = $C00C
|
||||
KBDSTROBE = $C010
|
||||
VBL = $C019
|
||||
MONOCOLOR = $C021
|
||||
NEWVIDEO = $C029
|
||||
VERTCNT = $C02E
|
||||
SPKR = $C030
|
||||
CYAREG = $C036
|
||||
TXTCLR = $C050
|
||||
TXTSET = $C051
|
||||
MIXCLR = $C052
|
||||
MIXSET = $C053
|
||||
TXTPAGE1 = $C054
|
||||
TXTPAGE2 = $C055
|
||||
LORES = $C056
|
||||
HIRES = $C057
|
||||
|
||||
*-------------- The firmware routines
|
||||
|
||||
HGR = $F3E2
|
||||
HPOSN = $F417
|
||||
INIT = $FB2F
|
||||
TABV = $FB5B
|
||||
SETPWRC = $FB6F
|
||||
HOME = $FC58
|
||||
WAIT = $FCA8
|
||||
RDKEY = $FD0C
|
||||
GETLN1 = $FD6F
|
||||
PRBYTE = $FDDA
|
||||
COUT = $FDED
|
||||
IDROUTINE = $FE1F
|
||||
SETNORM = $FE84
|
||||
SETKBD = $FE89
|
||||
BELL = $FF3A
|
||||
|
||||
*-----------------------------------
|
||||
* RELOCATE ME
|
||||
*-----------------------------------
|
||||
|
||||
ldx #8
|
||||
ldy #0
|
||||
theFROM lda ICI,y
|
||||
theTO sta ptrRELOCATE,y
|
||||
iny
|
||||
bne theFROM
|
||||
inc theFROM+2
|
||||
inc theTO+2
|
||||
dex
|
||||
bne theFROM
|
||||
jmp ptrRELOCATE
|
||||
|
||||
ICI
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD THE GAME
|
||||
*-----------------------------------
|
||||
|
||||
org ptrRELOCATE ; we are relocated
|
||||
|
||||
jsr PRODOS ; get the prefix
|
||||
dfb $c7
|
||||
da proGETPFX
|
||||
|
||||
jsr PRODOS ; set it
|
||||
dfb $c6
|
||||
da proGETPFX
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs in_notiigs
|
||||
|
||||
lda NEWVIDEO ; B/W hi-res
|
||||
sta oldNEWVIDEO
|
||||
ora #%0010_0000
|
||||
sta NEWVIDEO
|
||||
|
||||
lda MONOCOLOR ; disables color
|
||||
sta oldMONOCOLOR
|
||||
ora #%1000_0000
|
||||
sta MONOCOLOR
|
||||
|
||||
in_notiigs lda #>HGRPAGE1
|
||||
sta HPAG
|
||||
jsr HGR
|
||||
lda MIXCLR
|
||||
|
||||
ldy #<pTITLE
|
||||
ldx #>pTITLE
|
||||
jsr loadFILE
|
||||
jsr unpackLZ4
|
||||
|
||||
ldy #<pGAME
|
||||
ldx #>pGAME
|
||||
jsr loadFILE
|
||||
|
||||
sec
|
||||
jsr IDROUTINE
|
||||
bcs out_notiigs
|
||||
|
||||
lda oldNEWVIDEO ; B/W hi-res
|
||||
sta NEWVIDEO
|
||||
|
||||
lda oldMONOCOLOR ; disables color
|
||||
sta MONOCOLOR
|
||||
|
||||
out_notiigs jmp theGAME
|
||||
|
||||
*--- Data
|
||||
|
||||
oldMONOCOLOR ds 2 ; $C027
|
||||
oldNEWVIDEO ds 2 ; $C029
|
||||
|
||||
*--------------------------------------
|
||||
* unpackLZ4
|
||||
*
|
||||
* Unpack a LZ4 image
|
||||
* Code by Peter Ferrie
|
||||
* Used with permission
|
||||
* Adapted for the game engine
|
||||
*
|
||||
*--------------------------------------
|
||||
|
||||
unpackLZ4 ldy #<ptrTITLE ; src
|
||||
ldx #>ptrTITLE
|
||||
|
||||
tya ; end
|
||||
clc
|
||||
adc proGETEOF+2
|
||||
sta lz4end
|
||||
txa
|
||||
adc proGETEOF+3
|
||||
sta lz4end+1
|
||||
|
||||
lda #<HGRPAGE1 ; dest
|
||||
sta dst
|
||||
lda #>HGRPAGE1
|
||||
sta dst+1
|
||||
|
||||
tya ; move to data
|
||||
clc
|
||||
adc #16
|
||||
sta src
|
||||
txa
|
||||
adc #0
|
||||
sta src+1
|
||||
|
||||
ldy #0 ; src/dst index
|
||||
sty count
|
||||
|
||||
parsetoken jsr getsrc
|
||||
pha
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
beq copymatches
|
||||
jsr buildcount
|
||||
tax
|
||||
jsr docopy
|
||||
|
||||
lda src ; did we reach the end?
|
||||
cmp lz4end
|
||||
lda src+1
|
||||
sbc lz4end+1
|
||||
bcs lz4done
|
||||
|
||||
copymatches jsr getsrc
|
||||
sta delta
|
||||
jsr getsrc
|
||||
sta delta+1
|
||||
pla
|
||||
and #$0f
|
||||
jsr buildcount
|
||||
clc
|
||||
adc #4
|
||||
tax
|
||||
bcc copymatches1
|
||||
inc count+1
|
||||
copymatches1 lda src+1
|
||||
pha
|
||||
lda src
|
||||
pha
|
||||
sec
|
||||
lda dst
|
||||
sbc delta
|
||||
sta src
|
||||
lda dst+1
|
||||
sbc delta+1
|
||||
sta src+1
|
||||
jsr docopy
|
||||
pla
|
||||
sta src
|
||||
pla
|
||||
sta src+1
|
||||
jmp parsetoken
|
||||
|
||||
lz4done pla ; yes, exit!
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
docopy jsr getput
|
||||
dex
|
||||
bne docopy
|
||||
dec count+1
|
||||
bne docopy
|
||||
rts
|
||||
|
||||
*---
|
||||
|
||||
buildcount ldx #1
|
||||
stx count+1
|
||||
cmp #$0f
|
||||
bne buildcount2
|
||||
]lp sta count
|
||||
jsr getsrc
|
||||
tax
|
||||
clc
|
||||
adc count
|
||||
bcc buildcount1
|
||||
inc count+1
|
||||
buildcount1 inx
|
||||
beq ]lp
|
||||
buildcount2 rts
|
||||
|
||||
*---
|
||||
|
||||
getput jsr getsrc
|
||||
|
||||
putdst sta (dst), y
|
||||
inc dst
|
||||
bne putdst1
|
||||
inc dst+1
|
||||
putdst1 rts
|
||||
|
||||
*---
|
||||
|
||||
getsrc lda (src), y
|
||||
inc src
|
||||
bne getsrc1
|
||||
inc src+1
|
||||
getsrc1 rts
|
||||
|
||||
*--- Data
|
||||
|
||||
lz4end ds 2
|
||||
count ds 2
|
||||
delta ds 2
|
||||
|
||||
*-----------------------------------
|
||||
* LOAD A FILE
|
||||
*-----------------------------------
|
||||
|
||||
loadFILE sty proOPEN+1
|
||||
stx proOPEN+2
|
||||
|
||||
jsr PRODOS
|
||||
dfb $c8
|
||||
da proOPEN
|
||||
bcs quitME
|
||||
|
||||
lda proOPEN+5 ; zou, on prend l'ID
|
||||
sta proGETEOF+1
|
||||
sta proREAD+1
|
||||
sta proCLOSE+1
|
||||
|
||||
jsr PRODOS ; longueur du fichier
|
||||
dfb $d1
|
||||
da proGETEOF
|
||||
bcs quitME
|
||||
|
||||
lda proGETEOF+2
|
||||
sta proREAD+4
|
||||
lda proGETEOF+3
|
||||
sta proREAD+5
|
||||
|
||||
jsr PRODOS ; lecture du fichier
|
||||
dfb $ca
|
||||
da proREAD
|
||||
bcs quitME
|
||||
|
||||
jsr PRODOS ; fermeture du fichier
|
||||
dfb $cc
|
||||
da proCLOSE
|
||||
bcs quitME
|
||||
|
||||
rts
|
||||
|
||||
quitME jsr PRODOS ; exit
|
||||
dfb $65
|
||||
da proQUIT
|
||||
|
||||
brk $bd ; on ne se refait pas ;-)
|
||||
|
||||
*--- Data
|
||||
|
||||
proQUIT dfb $4
|
||||
ds 1
|
||||
ds 2
|
||||
ds 1
|
||||
ds 2
|
||||
|
||||
proGETPFX dfb $1
|
||||
da ptrPREFIX
|
||||
|
||||
proOPEN dfb $3
|
||||
da pTITLE ; pathname (par d<>faut, le moteur)
|
||||
da proBUFFER ; io_buffer
|
||||
ds 1 ; ref_num
|
||||
|
||||
proREAD dfb $4
|
||||
ds 1 ; ref_num
|
||||
da ptrTITLE ; data_buffer
|
||||
ds 2 ; request_count
|
||||
ds 2 ; transfer_count
|
||||
|
||||
proCLOSE dfb $1
|
||||
ds 1 ; ref_num
|
||||
|
||||
proGETEOF dfb $2
|
||||
ds 1 ; ref_num
|
||||
ds 3 ; eof
|
||||
|
||||
pTITLE str 'data/title.lz4'
|
||||
pGAME str 'game'
|
||||
|
||||
*--- The end
|
273
kontra2/apple2/sources/en/solution.s
Normal file
@@ -0,0 +1,273 @@
|
||||
VEN
|
||||
V
|
||||
J
|
||||
V
|
||||
S
|
||||
VZEMI VZIGALICE
|
||||
S
|
||||
VKLJUCI SPECTRUM
|
||||
S
|
||||
VRZI TRAFO
|
||||
Z
|
||||
VZEMI SIVANKO
|
||||
JZ
|
||||
V
|
||||
J
|
||||
V
|
||||
V
|
||||
JV
|
||||
SIVAJ KOZE
|
||||
VZEMI OBLEKO
|
||||
Z
|
||||
J
|
||||
Z
|
||||
VZEMI KIP
|
||||
SZ
|
||||
Z
|
||||
J
|
||||
Z
|
||||
PRODAJ KIP
|
||||
S
|
||||
KUPI TRNKE
|
||||
JV
|
||||
SZ
|
||||
S
|
||||
NOT
|
||||
OBLEKO ZA SITULO
|
||||
VEN
|
||||
V
|
||||
J
|
||||
J
|
||||
Z
|
||||
Z
|
||||
S
|
||||
VZEMI LES
|
||||
S
|
||||
PRIZGI OGENJ
|
||||
VZEMI MED
|
||||
SZ
|
||||
S
|
||||
V
|
||||
J
|
||||
J
|
||||
Z
|
||||
Z
|
||||
DAJ MED
|
||||
NOT
|
||||
VZEMI PROTEUSA
|
||||
VEN
|
||||
S
|
||||
S
|
||||
SZ
|
||||
S
|
||||
Z
|
||||
VZEMI SMOLO
|
||||
SMOLO SITULO
|
||||
V
|
||||
SZ
|
||||
S
|
||||
V
|
||||
J
|
||||
V
|
||||
UJEMI REGO
|
||||
J
|
||||
V
|
||||
DAJ REGO
|
||||
S
|
||||
S
|
||||
S
|
||||
Z
|
||||
JZ
|
||||
S # repeat S until location changes
|
||||
VRZI SPECTRUM
|
||||
VZEMI JANTAR
|
||||
Z
|
||||
J
|
||||
J
|
||||
VRZI PROTEUSA
|
||||
Z
|
||||
NAPOVEJ VREME
|
||||
DAJ SMOLO
|
||||
DAJ VZIGALICE
|
||||
V
|
||||
VZEMI KOVANEC
|
||||
J
|
||||
JV
|
||||
HARFA PRSTAN
|
||||
SV
|
||||
NATAKNI PRSTAN
|
||||
J
|
||||
UBIJ ATILO
|
||||
DA
|
||||
VZEMI GLAVO
|
||||
OBLECI RUNO
|
||||
VZEMI GLAVO
|
||||
J
|
||||
V
|
||||
NOT
|
||||
V
|
||||
S
|
||||
DAJ GLAVO
|
||||
OPIS
|
||||
VZEMI EMONCA
|
||||
V
|
||||
J
|
||||
VEN
|
||||
SV
|
||||
DAJ SIVANKO
|
||||
VZEMI LOPATO
|
||||
J
|
||||
SV
|
||||
NOT
|
||||
V
|
||||
ZAKOPLJI EMONCA
|
||||
J
|
||||
VEN
|
||||
SV
|
||||
J
|
||||
JZ
|
||||
Z
|
||||
NOT
|
||||
VZEMI KREMO
|
||||
VEN
|
||||
J
|
||||
SV
|
||||
J
|
||||
J
|
||||
V
|
||||
SV
|
||||
J
|
||||
JZ
|
||||
S
|
||||
DAJ KREMO
|
||||
OBLECI GATE
|
||||
S
|
||||
POFUKAJ TEODORO
|
||||
VZEMI SIBO
|
||||
J
|
||||
UDARI VRAGA
|
||||
VZEMI VILE
|
||||
V
|
||||
Z
|
||||
VILE VINO
|
||||
JV
|
||||
J
|
||||
SV
|
||||
Z
|
||||
J
|
||||
V
|
||||
VZEMI LOBANJO
|
||||
V
|
||||
POJEJ LOBANJO
|
||||
SV
|
||||
V
|
||||
VZEMI ZENSKE
|
||||
JV
|
||||
V
|
||||
V
|
||||
ZENSKE ZA CUPRIJO
|
||||
J
|
||||
J
|
||||
J
|
||||
JZ
|
||||
CUPRIJO ZA SOKOLA
|
||||
V
|
||||
SV
|
||||
PRODAJ SOKOLA
|
||||
J
|
||||
Z
|
||||
J
|
||||
DAJ DJERDAN
|
||||
VZEMI KRALJEVSTVO
|
||||
S
|
||||
V
|
||||
NOT
|
||||
KRALJEVSTVO ZA KONJA
|
||||
VEN
|
||||
Z
|
||||
JV
|
||||
J
|
||||
J
|
||||
SV
|
||||
J
|
||||
VZEMI VILO
|
||||
Z
|
||||
Z
|
||||
V
|
||||
V
|
||||
Z
|
||||
J
|
||||
J
|
||||
RESI DEVOJKO
|
||||
Z
|
||||
V
|
||||
SV
|
||||
S
|
||||
ZBUDI LAZARJA
|
||||
J
|
||||
J
|
||||
VZEMI PASULJ
|
||||
JV
|
||||
PASULJ ZA KAVO
|
||||
SV
|
||||
JZ
|
||||
KAVO ZA PUSKO
|
||||
J
|
||||
JZ
|
||||
VRZI MICRODRIVE
|
||||
VZEMI BISER
|
||||
Z
|
||||
BISER ZA ZDRAVILO
|
||||
J
|
||||
POZDRAVI METODA
|
||||
VZEMI ABECEDO
|
||||
S
|
||||
V
|
||||
DAJ ABECEDO
|
||||
OPIS
|
||||
VZEMI PRIPOVEDKE
|
||||
J
|
||||
JZ
|
||||
Z
|
||||
Z
|
||||
S
|
||||
DAJ PRIPOVEDKE
|
||||
VZEMI LIPO
|
||||
S
|
||||
SZ
|
||||
Z
|
||||
USTRELI KOZOROGA
|
||||
VRZI PUSKO
|
||||
VZEMI KAMEN
|
||||
Z
|
||||
SV
|
||||
SV
|
||||
NOT
|
||||
POSADI LIPO
|
||||
J
|
||||
J
|
||||
S
|
||||
V
|
||||
J
|
||||
J
|
||||
J
|
||||
Z
|
||||
VRZI TRNKE
|
||||
VZEMI SOL
|
||||
S
|
||||
S
|
||||
SZ
|
||||
Z
|
||||
Z
|
||||
SV
|
||||
SV
|
||||
POZDRAVI FRANCA
|
||||
SOL F GLAVO
|
||||
J
|
||||
ODKOPLJI EMONCA
|
||||
DAJ EMONCA
|
||||
UBIJ POSAST
|
||||
VZEMI KLJUC
|
||||
Z
|
||||
ODKLENI VRATA
|
||||
a
|