Compare commits
1 commit
7ec20a26e2
...
00de354f28
Author | SHA1 | Date | |
---|---|---|---|
|
00de354f28 |
5 changed files with 360 additions and 0 deletions
128
TEMPLENG/LICENSE.MD
Normal file
128
TEMPLENG/LICENSE.MD
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
CC0 1.0 Universal license
|
||||||
|
=========================
|
||||||
|
|
||||||
|
Statement of Purpose
|
||||||
|
|
||||||
|
The laws of most jurisdictions throughout the world automatically confer
|
||||||
|
exclusive Copyright and Related Rights (defined below) upon the creator
|
||||||
|
and subsequent owner(s) (each and all, an "owner") of an original work
|
||||||
|
of authorship and/or a database (each, a "Work").
|
||||||
|
|
||||||
|
Certain owners wish to permanently relinquish those rights to a Work for
|
||||||
|
the purpose of contributing to a commons of creative, cultural and
|
||||||
|
scientific works ("Commons") that the public can reliably and without
|
||||||
|
fear of later claims of infringement build upon, modify, incorporate in
|
||||||
|
other works, reuse and redistribute as freely as possible in any form
|
||||||
|
whatsoever and for any purposes, including without limitation commercial
|
||||||
|
purposes. These owners may contribute to the Commons to promote the
|
||||||
|
ideal of a free culture and the further production of creative, cultural
|
||||||
|
and scientific works, or to gain reputation or greater distribution for
|
||||||
|
their Work in part through the use and efforts of others.
|
||||||
|
|
||||||
|
For these and/or other purposes and motivations, and without any
|
||||||
|
expectation of additional consideration or compensation, the person
|
||||||
|
associating CC0 with a Work (the "Affirmer"), to the extent that he or
|
||||||
|
she is an owner of Copyright and Related Rights in the Work, voluntarily
|
||||||
|
elects to apply CC0 to the Work and publicly distribute the Work under
|
||||||
|
its terms, with knowledge of his or her Copyright and Related Rights in
|
||||||
|
the Work and the meaning and intended legal effect of CC0 on those
|
||||||
|
rights.
|
||||||
|
|
||||||
|
1. Copyright and Related Rights. A Work made available under CC0 may be
|
||||||
|
protected by copyright and related or neighboring rights ("Copyright and
|
||||||
|
Related Rights"). Copyright and Related Rights include, but are not
|
||||||
|
limited to, the following:
|
||||||
|
|
||||||
|
i. the right to reproduce, adapt, distribute, perform, display,
|
||||||
|
communicate, and translate a Work;
|
||||||
|
|
||||||
|
ii. moral rights retained by the original author(s) and/or
|
||||||
|
performer(s);
|
||||||
|
|
||||||
|
iii. publicity and privacy rights pertaining to a person's image or
|
||||||
|
likeness depicted in a Work;
|
||||||
|
|
||||||
|
iv. rights protecting against unfair competition in regards to a Work,
|
||||||
|
subject to the limitations in paragraph 4(a), below;
|
||||||
|
|
||||||
|
v. rights protecting the extraction, dissemination, use and reuse of
|
||||||
|
data in a Work;
|
||||||
|
|
||||||
|
vi. database rights (such as those arising under Directive 96/9/EC of
|
||||||
|
the European Parliament and of the Council of 11 March 1996 on the
|
||||||
|
legal protection of databases, and under any national implementation
|
||||||
|
thereof, including any amended or successor version of such
|
||||||
|
directive); and
|
||||||
|
|
||||||
|
vii. other similar, equivalent or corresponding rights throughout the
|
||||||
|
world based on applicable law or treaty, and any national
|
||||||
|
implementations thereof.
|
||||||
|
|
||||||
|
2. Waiver. To the greatest extent permitted by, but not in contravention
|
||||||
|
of, applicable law, Affirmer hereby overtly, fully, permanently,
|
||||||
|
irrevocably and unconditionally waives, abandons, and surrenders all of
|
||||||
|
Affirmer's Copyright and Related Rights and associated claims and causes
|
||||||
|
of action, whether now known or unknown (including existing as well as
|
||||||
|
future claims and causes of action), in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or
|
||||||
|
future medium and for any number of copies, and (iv) for any purpose
|
||||||
|
whatsoever, including without limitation commercial, advertising or
|
||||||
|
promotional purposes (the "Waiver"). Affirmer makes the Waiver for the
|
||||||
|
benefit of each member of the public at large and to the detriment of
|
||||||
|
Affirmer's heirs and successors, fully intending that such Waiver shall
|
||||||
|
not be subject to revocation, rescission, cancellation, termination, or
|
||||||
|
any other legal or equitable action to disrupt the quiet enjoyment of
|
||||||
|
the Work by the public as contemplated by Affirmer's express Statement
|
||||||
|
of Purpose.
|
||||||
|
|
||||||
|
3. Public License Fallback. Should any part of the Waiver for any reason
|
||||||
|
be judged legally invalid or ineffective under applicable law, then the
|
||||||
|
Waiver shall be preserved to the maximum extent permitted taking into
|
||||||
|
account Affirmer's express Statement of Purpose. In addition, to the
|
||||||
|
extent the Waiver is so judged Affirmer hereby grants to each affected
|
||||||
|
person a royalty-free, non transferable, non sublicensable, non
|
||||||
|
exclusive, irrevocable and unconditional license to exercise Affirmer's
|
||||||
|
Copyright and Related Rights in the Work (i) in all territories
|
||||||
|
worldwide, (ii) for the maximum duration provided by applicable law or
|
||||||
|
treaty (including future time extensions), (iii) in any current or
|
||||||
|
future medium and for any number of copies, and (iv) for any purpose
|
||||||
|
whatsoever, including without limitation commercial, advertising or
|
||||||
|
promotional purposes (the "License"). The License shall be deemed
|
||||||
|
effective as of the date CC0 was applied by Affirmer to the Work. Should
|
||||||
|
any part of the License for any reason be judged legally invalid or
|
||||||
|
ineffective under applicable law, such partial invalidity or
|
||||||
|
ineffectiveness shall not invalidate the remainder of the License, and
|
||||||
|
in such case Affirmer hereby affirms that he or she will not (i)
|
||||||
|
exercise any of his or her remaining Copyright and Related Rights in the
|
||||||
|
Work or (ii) assert any associated claims and causes of action with
|
||||||
|
respect to the Work, in either case contrary to Affirmer's express
|
||||||
|
Statement of Purpose.
|
||||||
|
|
||||||
|
4. Limitations and Disclaimers.
|
||||||
|
|
||||||
|
a. No trademark or patent rights held by Affirmer are waived,
|
||||||
|
abandoned, surrendered, licensed or otherwise affected by this
|
||||||
|
document.
|
||||||
|
|
||||||
|
b. Affirmer offers the Work as-is and makes no representations or
|
||||||
|
warranties of any kind concerning the Work, express, implied,
|
||||||
|
statutory or otherwise, including without limitation warranties of
|
||||||
|
title, merchantability, fitness for a particular purpose, non
|
||||||
|
infringement, or the absence of latent or other defects, accuracy, or
|
||||||
|
the present or absence of errors, whether or not discoverable, all to
|
||||||
|
the greatest extent permissible under applicable law.
|
||||||
|
|
||||||
|
c. Affirmer disclaims responsibility for clearing rights of other
|
||||||
|
persons that may apply to the Work or any use thereof, including
|
||||||
|
without limitation any person's Copyright and Related Rights in the
|
||||||
|
Work. Further, Affirmer disclaims responsibility for obtaining any
|
||||||
|
necessary consents, permissions or other rights required for any use
|
||||||
|
of the Work.
|
||||||
|
|
||||||
|
d. Affirmer understands and acknowledges that Creative Commons is not
|
||||||
|
a party to this document and has no duty or obligation with respect to
|
||||||
|
this CC0 or use of the Work.
|
||||||
|
|
||||||
|
For more information, please see
|
||||||
|
<http://creativecommons.org/publicdomain/zero/1.0/>
|
47
TEMPLENG/README.MD
Normal file
47
TEMPLENG/README.MD
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
TEMPLENG
|
||||||
|
========
|
||||||
|
|
||||||
|
TEMPLENG is a text adventure game engine based on an earlier, standalone
|
||||||
|
EttinOS port of In the Temple.
|
||||||
|
|
||||||
|
Syntax: TEMPLENG DATAFILE.DAT
|
||||||
|
|
||||||
|
Press any key other than escape to start the game or to return back to
|
||||||
|
the beginning after an ending, the corresponding number to choose an
|
||||||
|
option in a non-ending scene, or escape to quit the game.
|
||||||
|
|
||||||
|
TEMPLE
|
||||||
|
------
|
||||||
|
|
||||||
|
Included in the package is TEMPLE, a TEMPLENG port of the web-based text
|
||||||
|
adventure game In the Temple by nortti. Its original readme is
|
||||||
|
reproduced here:
|
||||||
|
|
||||||
|
> A small game about a visit to a temple and the reasons for doing so.
|
||||||
|
>
|
||||||
|
> Can be played online at https://ahti.space/~nortti/in-the-temple/ or
|
||||||
|
> at https://nortti.itch.io/in-the-temple
|
||||||
|
>
|
||||||
|
> The game is distributed under the Creative Commons Zero 1.0 Universal
|
||||||
|
> license.
|
||||||
|
|
||||||
|
The data files
|
||||||
|
--------------
|
||||||
|
|
||||||
|
A data file consists of an intro text ending in a null followed by any
|
||||||
|
number of scenes. See the included TEMPLE.DAT for an example.
|
||||||
|
|
||||||
|
A scene begins with a start of heading (0x1) and consists of its ID, the
|
||||||
|
number of options it has, and the scene text, all ending in a null. The
|
||||||
|
ID of a scene consists of a string of numbers representing the choices
|
||||||
|
that lead to it, and can be between 2 and 255 characters long including
|
||||||
|
the null. The ID of the first scene is 0. The number of options can be
|
||||||
|
anything between 0 and 9, 0 indicating an ending. The options of a scene
|
||||||
|
must point to scenes placed after it in the data file. The scene text
|
||||||
|
should not exceed 24 lines or all of it won't fit on the screen at once.
|
||||||
|
|
||||||
|
***
|
||||||
|
|
||||||
|
This package is part of EttinOS-extra, a collection of programs for
|
||||||
|
EttinOS, the git repository of which can be found at
|
||||||
|
https://ahti.space/git/crazyettin/EttinOS-extra.
|
BIN
TEMPLENG/TEMPLE.DAT
Normal file
BIN
TEMPLENG/TEMPLE.DAT
Normal file
Binary file not shown.
179
TEMPLENG/TEMPLENG.ASM
Normal file
179
TEMPLENG/TEMPLENG.ASM
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
cpu 8086
|
||||||
|
org 0x3000
|
||||||
|
|
||||||
|
;Set the stack
|
||||||
|
cli
|
||||||
|
mov sp, stack + 0x100
|
||||||
|
sti
|
||||||
|
|
||||||
|
;Check for an empty tail
|
||||||
|
;Check
|
||||||
|
cmp byte [si], 0x0
|
||||||
|
jne extract
|
||||||
|
;Print an error message and abort if the tail is empty
|
||||||
|
mov si, errormsg
|
||||||
|
mov ah, 0x2
|
||||||
|
int 0x21
|
||||||
|
je done
|
||||||
|
|
||||||
|
;Find the end of the data file name and add a null if needed
|
||||||
|
;Set DI at the tail
|
||||||
|
extract:
|
||||||
|
mov di, si
|
||||||
|
findend:
|
||||||
|
;Check for the string end
|
||||||
|
cmp byte [di], 0x0
|
||||||
|
je load
|
||||||
|
;Check for a space
|
||||||
|
cmp byte [di], 0x20
|
||||||
|
je addnull
|
||||||
|
inc di
|
||||||
|
jmp findend
|
||||||
|
;Add a null
|
||||||
|
addnull:
|
||||||
|
mov al, 0x0
|
||||||
|
stosb
|
||||||
|
|
||||||
|
;Load the data file
|
||||||
|
;Load
|
||||||
|
load:
|
||||||
|
mov bx, stack + 0x100
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x22
|
||||||
|
;Check for errors
|
||||||
|
cmp al, 0x0
|
||||||
|
jne done
|
||||||
|
|
||||||
|
;Setup
|
||||||
|
start:
|
||||||
|
;Set SI to the beginning of the data file
|
||||||
|
mov si, stack + 0x100
|
||||||
|
;Initialise the scene ID with zeroes and set DI at its beginning
|
||||||
|
mov di, sceneid
|
||||||
|
mov cx, 0xff
|
||||||
|
mov al, 0x0
|
||||||
|
rep stosb
|
||||||
|
mov di, sceneid
|
||||||
|
|
||||||
|
;Intro
|
||||||
|
;Print the intro
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x21
|
||||||
|
;Read any key to start
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x16
|
||||||
|
call readquit
|
||||||
|
;Set the ID of the first scene
|
||||||
|
mov al, "0"
|
||||||
|
stosb
|
||||||
|
|
||||||
|
;Search for the current scene
|
||||||
|
searchscene:
|
||||||
|
lodsb
|
||||||
|
cmp al, 0x1
|
||||||
|
je checkscene
|
||||||
|
jmp searchscene
|
||||||
|
|
||||||
|
;Check for the current scene
|
||||||
|
;Set DI to the current scene id
|
||||||
|
checkscene:
|
||||||
|
mov di, sceneid
|
||||||
|
;Load the current characters
|
||||||
|
checkloop:
|
||||||
|
mov al, [si]
|
||||||
|
mov bl, [di]
|
||||||
|
;Compare the characters
|
||||||
|
cmp al, bl
|
||||||
|
jne searchscene
|
||||||
|
;Check for the string end
|
||||||
|
cmp al, 0x0
|
||||||
|
je loadoptions
|
||||||
|
;Compare the next characters
|
||||||
|
inc si
|
||||||
|
inc di
|
||||||
|
jmp checkloop
|
||||||
|
|
||||||
|
;Load the number of options to BL
|
||||||
|
loadoptions:
|
||||||
|
inc si
|
||||||
|
lodsb
|
||||||
|
mov bl, al
|
||||||
|
|
||||||
|
;Print the scene
|
||||||
|
;Move SI to the beginning of the scene text
|
||||||
|
inc si
|
||||||
|
;Print the scene
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x21
|
||||||
|
|
||||||
|
;Read the player choice
|
||||||
|
;Set DI at the options key
|
||||||
|
readchoice:
|
||||||
|
mov di, options
|
||||||
|
;Set the maximum number of options
|
||||||
|
mov cx, 0x9
|
||||||
|
;Read a keypress
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x16
|
||||||
|
;Check for quitting
|
||||||
|
call readquit
|
||||||
|
;Check for an ending scene
|
||||||
|
cmp bl, "0"
|
||||||
|
je ending
|
||||||
|
;Compare the keypress to the key
|
||||||
|
cmpchoice:
|
||||||
|
cmp al, [di]
|
||||||
|
je setscene
|
||||||
|
cmp bl, [di]
|
||||||
|
je readchoice
|
||||||
|
inc di
|
||||||
|
loop cmpchoice
|
||||||
|
jmp readchoice
|
||||||
|
|
||||||
|
;Set the next scene
|
||||||
|
;Find the end of the current scene id
|
||||||
|
setscene:
|
||||||
|
mov di, sceneid
|
||||||
|
findidend:
|
||||||
|
cmp byte [di], 0x0
|
||||||
|
je addoption
|
||||||
|
inc di
|
||||||
|
jmp findidend
|
||||||
|
;Add the chosen option
|
||||||
|
addoption:
|
||||||
|
stosb
|
||||||
|
;Go to the next scene
|
||||||
|
jmp searchscene
|
||||||
|
|
||||||
|
ending:
|
||||||
|
mov si, crlf
|
||||||
|
mov ah, 0x0
|
||||||
|
int 0x21
|
||||||
|
jmp start
|
||||||
|
|
||||||
|
;Return to the system
|
||||||
|
done:
|
||||||
|
int 0x20
|
||||||
|
|
||||||
|
;Data
|
||||||
|
errormsg db "File not found", 0x0
|
||||||
|
sceneid times 0xff db 0x0
|
||||||
|
options db "123456789"
|
||||||
|
crlf db 0xd, 0xa, 0x0
|
||||||
|
|
||||||
|
;***
|
||||||
|
|
||||||
|
;Quit the game
|
||||||
|
readquit:
|
||||||
|
|
||||||
|
;Check for keypress escape
|
||||||
|
cmp al, 0x1b
|
||||||
|
je done
|
||||||
|
|
||||||
|
;Return
|
||||||
|
ret
|
||||||
|
|
||||||
|
;***
|
||||||
|
|
||||||
|
;Stack
|
||||||
|
stack:
|
6
make.sh
6
make.sh
|
@ -24,3 +24,9 @@ nasm TEMPLE.ASM -f bin -o TEMPLE.BIN
|
||||||
zip -r TEMPLE.ZIP TEMPLE.BIN TEMPLE.ASM README.MD LICENSE.MD 1>/dev/null
|
zip -r TEMPLE.ZIP TEMPLE.BIN TEMPLE.ASM README.MD LICENSE.MD 1>/dev/null
|
||||||
mv TEMPLE.ZIP ..
|
mv TEMPLE.ZIP ..
|
||||||
cd ..
|
cd ..
|
||||||
|
|
||||||
|
cd TEMPLENG/
|
||||||
|
nasm TEMPLENG.ASM -f bin -o TEMPLENG.BIN
|
||||||
|
zip -r TEMPLENG.ZIP TEMPLENG.BIN TEMPLENG.ASM README.MD LICENSE.MD TEMPLE.DAT 1>/dev/null
|
||||||
|
mv TEMPLENG.ZIP ..
|
||||||
|
cd ..
|
||||||
|
|
Loading…
Reference in a new issue