Switch from direct zip files to sources as uncompressed files.

This commit is contained in:
CrazyEttin 2021-07-09 22:12:33 +03:00
parent 86585d6a9c
commit db4ce66684
19 changed files with 1326 additions and 5 deletions

Binary file not shown.

116
CONVERT/CC0 Normal file
View File

@ -0,0 +1,116 @@
CC0 1.0 Universal
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/>

87
CONVERT/DEC2HEX.ASM Normal file
View File

@ -0,0 +1,87 @@
cpu 8086
org 0x3000
xor dx, dx
cmp byte [si], 0
jne atoi
mov ah, 2
mov si, overflow_msg
int 0x21
int 0x20
atoi:
lodsb
cmp al, 0
je .end
cmp al, '0'
jl .notdigit
cmp al, '9'
jg .notdigit
xor ah, ah
sub al, '0'
mov cx, ax
mov ax, dx
mul word [ten]
test dx, dx
jnz .overflow
mov dx, ax
add dx, cx
jc .overflow
jmp atoi
.notdigit:
mov byte [char_slot], al
mov si, notdigit_msg
mov ah, 2
int 0x21
int 0x20
.overflow:
mov si, overflow_msg
mov ah, 2
int 0x21
int 0x20
.end:
std
mov di, hexstring+3
xor bh, bh
mov cx, 4
itoh:
mov bl, 0xf
and bl, dl
mov al, [hexdigits + bx]
stosb
shr dx, 1
shr dx, 1
shr dx, 1
shr dx, 1
loop itoh
cld
mov si, hexstring
mov ah, 2
int 0x21
int 0x20
notdigit_msg db "Not a digit '"
char_slot db 0, "'", 0
overflow_msg db "Value must be in range 0 to 65535", 0
hexstring db "xxxx", 0
hexdigits db "0123456789abcdef"
ten dw 10

101
CONVERT/HEX2DEC.ASM Normal file
View File

@ -0,0 +1,101 @@
cpu 8086
org 0x3000
xor dx, dx
cmp byte [si], 0
jne htoi
mov ah, 2
mov si, overflow_msg
int 0x21
int 0x20
htoi:
lodsb
cmp al, 0
je .end
.digit09:
cmp al, '0'
jl .notdigit
cmp al, '9'
jg .digitcapital
sub al, '0'
jmp .digit
.digitcapital:
cmp al, 'A'
jl .notdigit
cmp al, 'F'
jg .digitminuscule
sub al, 'A' - 10
jmp .digit
.digitminuscule:
cmp al, 'a'
jl .notdigit
cmp al, 'f'
jg .notdigit
sub al, 'a' - 10
jmp .digit
.digit:
xor ah, ah
test dx, 0xf000
jnz .overflow
shl dx, 1
shl dx, 1
shl dx, 1
shl dx, 1
or dx, ax
jmp htoi
.notdigit:
mov byte [char_slot], al
mov si, notdigit_msg
mov ah, 2
int 0x21
int 0x20
.overflow:
mov si, overflow_msg
mov ah, 2
int 0x21
int 0x20
.end:
mov si, decimalstring + 5
mov ax, dx
itoa:
dec si
xor dx, dx
div word [ten]
add dl, '0'
mov byte [si], dl
test ax, ax
jnz itoa
mov ah, 2
int 0x21
int 0x20
notdigit_msg db "Not a digit '"
char_slot db 0, "'", 0
overflow_msg db "Value must be in range 0 to ffff", 0
decimalstring db "xxxxx", 0
ten dw 10

15
CONVERT/README.MD Normal file
View File

@ -0,0 +1,15 @@
CONVERT
=======
DEC2HEX and HEX2DEC convert numbers to and from decimal and hexadecimal
bases. They were written by nortti, and are originally from their
ettinos-programs repository, which can be found at
https://ahti.space/git/nortti/ettinos-programs/.
Syntax: DEC2HEX|HEX2DEC number
***
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.

Binary file not shown.

86
KEYCODE/KEYCODE.ASM Normal file
View File

@ -0,0 +1,86 @@
cpu 8086
org 0x3000
;Store a keycode
;Read a keypress
mov ah, 0x0
int 0x16
;Store the keycode
mov [scan], ah
mov [ascii], al
;Print the prefix
mov si, prefix
mov ah, 0x0
int 0x21
;Convert the keycode to a hex string
;Convert the scancode
mov al, [scan]
mov di, keycode
call byte2hex
;Convert the ascii value
mov al, [ascii]
mov di, keycode
add di, 0x2
call byte2hex
;Print the keycode
mov si, keycode
mov ah, 0x2
int 0x21
;Return
int 0x20
;Data
prefix db "0x", 0x0
scan db 0x0
ascii db 0x0
keycode times 0x5 db 0x0
;***
;Convert the value of a byte to a hex string
byte2hex:
;Store AX, BX, CX, and SI in the stack
push ax
push bx
push cx
push si
;Setup
;Move the byte to AH
mov ah, al
;Set SI to the hex digit key
mov si, key
;Set a counter for the two hex digits
mov cx, 0x2
;Convert the byte
;Read a nibble
loop:
times 0x4 rol ax, 0x1
mov bx, ax
;Convert the nibble to a hex digit
and bx, 0xf
mov bl, [si + bx]
;Store the hex digit
mov [di], bl
;Convert the next nibble
inc di
dec cx
jnz loop
;Load SI, CX, BX, and AX from the stack
pop si
pop cx
pop bx
pop ax
;Return
ret
;Data
key db "0123456789abcdef"

23
KEYCODE/LICENSE.MD Normal file
View File

@ -0,0 +1,23 @@
MIT license
===========
Copyright (c) 2021 CrazyEttin
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

10
KEYCODE/README.MD Normal file
View File

@ -0,0 +1,10 @@
KEYCODE
=======
KEYCODE reads a keypress and prints its BIOS keycode.
***
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.

View File

@ -1,12 +1,21 @@
EttinOS-extra
=============
EttinOS-extra is a collection of programs for EttinOS. Its git
repository can be found at
EttinOS-extra is a collection of programs for EttinOS organised as
packages. Its git repository can be found at
https://ahti.space/git/crazyettin/EttinOS-extra and that of EttinOS
itself at https://ahti.space/git/crazyettin/EttinOS.
The programs are provided as packages in the form of zip archives
including the assembly source code and other relevant files.
For copyright and license information see the individual packages.
Building
--------
Build dependencies:
* A Unix-like operating system
* coreutils
* nasm
* zip
Running make.sh will build the programs in the collection and create a
package in the form of a zip archive for each of the directories.

BIN
ROT13.ZIP

Binary file not shown.

116
ROT13/CC0 Normal file
View File

@ -0,0 +1,116 @@
CC0 1.0 Universal
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/>

15
ROT13/README.MD Normal file
View File

@ -0,0 +1,15 @@
ROT13
=====
ROT13 encodes and decodes a message using the ROT13 cipher. It was
written by nortti, and is originally from their ettinos-programs
repository, which can be found at
https://ahti.space/git/nortti/ettinos-programs/.
Syntax: ROT13 Message to be encoded or decoded
***
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.

38
ROT13/ROT13.ASM Normal file
View File

@ -0,0 +1,38 @@
cpu 8086
org 0x3000
mov bx, si
rotloop:
cmp byte [bx], 0
jz .end
cmp byte [bx], 'A'
jl .next
cmp byte [bx], 'M'
jle .inc
cmp byte [bx], 'Z'
jle .dec
cmp byte [bx], 'a'
jl .next
cmp byte [bx], 'm'
jle .inc
cmp byte [bx], 'z'
jle .dec
.next:
inc bx
jmp short rotloop
.inc:
add byte [bx], 13
jmp short .next
.dec:
sub byte [bx], 13
jmp short .next
.end:
mov ah, 2
int 0x21
int 0x20

Binary file not shown.

128
TEMPLE/LICENSE.MD Normal file
View 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/>

19
TEMPLE/README.MD Normal file
View File

@ -0,0 +1,19 @@
TEMPLE
======
TEMPLE is an assembly port for EttinOS 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.
***
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.

532
TEMPLE/TEMPLE.ASM Normal file
View File

@ -0,0 +1,532 @@
cpu 8086
org 0x3000
;Intro
;Print the intro
intro:
mov si, introtxt
mov ah, 0x2
int 0x21
;Read any key to start
mov ah, 0x0
int 0x16
call readquit
;Start
;Print the text
mov si, startxt
mov ah, 0x2
int 0x21
;Read the player choice
readstart:
mov ah, 0x0
int 0x16
cmp al, "1"
je give
cmp al, "2"
je take
cmp al, "3"
je do
call readquit
jmp readstart
;Giving
;Print the text
give:
mov si, givetxt
mov ah, 0x2
int 0x21
;Read the player choice
readgive:
mov ah, 0x0
int 0x16
cmp al, "1"
je comb
cmp al, "2"
je coin
call readquit
jmp readgive
;Giving a Comb
;Print the text
comb:
mov si, combtxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Giving a Coin
;Print the text
coin:
mov si, cointxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Taking
;Print the text
take:
mov si, taketxt
mov ah, 0x2
int 0x21
;Read the player choice
readtake:
mov ah, 0x0
int 0x16
cmp al, "1"
je bowl
cmp al, "2"
je knife
cmp al, "3"
je idol
call readquit
jmp readtake
;Taking the Bowl
;Print the text
bowl:
mov si, bowltxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Taking the Knife
;Print the text
knife:
mov si, knifetxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Taking the Idol
;Print the text
idol:
mov si, idoltxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Doing
;Print the text
do:
mov si, dotxt
mov ah, 0x2
int 0x21
;Read the player choice
reado:
mov ah, 0x0
int 0x16
cmp al, "1"
je sacrifice
cmp al, "2"
je iconoclasm
cmp al, "3"
je prayer
call readquit
jmp reado
;Making a Sacrifice
;Print the text
sacrifice:
mov si, sacrificetxt
mov ah, 0x2
int 0x21
;Read the player choice
readsacrifice:
mov ah, 0x0
int 0x16
cmp al, "1"
je bread
cmp al, "2"
je blood
call readquit
jmp readsacrifice
;A Sacrifice of Bread
;Print the text
bread:
mov si, breadtxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;A Sacrifice of Blood
;Print the text
blood:
mov si, bloodtxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Iconoclasm
;Print the text
iconoclasm:
mov si, iconoclasmtxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Prayer
;Print the text
prayer:
mov si, prayertxt
mov ah, 0x2
int 0x21
;Read any key to return back to the beginning
mov ah, 0x0
int 0x16
call readquit
mov si, crlf
mov ah, 0x0
int 0x21
jmp intro
;Return
done:
int 0x20
;Data
introtxt db "In the Temple", 0xd, 0xa,\
"=============", 0xd, 0xa,\
0xd, 0xa,\
"This is a story of your visit to the temple of ",\
"Arattavesh.",\
0xd, 0xa,\
0xd, 0xa,\
"To choose an option press the corresponding number. ",\
"To quit the game", 0xd, 0xa,\
"press Q.", 0xd, 0xa,\
0xd, 0xa,\
"Press any key to start.", 0x0
startxt db 0xd, 0xa,\
"Before the Idol", 0xd, 0xa,\
"---------------", 0xd, 0xa,\
0xd, 0xa,\
"You are in the back of the temple, before the idol of ",\
"Arattavesh. It is", 0xd, 0xa,\
"a well made wooden statue painted with gold and blue.",\
0xd, 0xa,\
0xd, 0xa,\
"In front of the statue there is an ornate knife and a ",\
"plain wooden bowl.", 0xd, 0xa,\
0xd, 0xa,\
"You have come here to the sanctum to...", 0xd, 0xa,\
" 1. give something.", 0xd, 0xa,\
" 2. take something.", 0xd, 0xa,\
" 3. do something.", 0x0
givetxt db 0xd, 0xa,\
"Giving", 0xd, 0xa,\
"------", 0xd, 0xa,\
0xd, 0xa,\
"You have arrived to deposit a votive offering to ",\
"Arattavesh for healing", 0xd, 0xa,\
"your sickness over the winter. You intend to give...",\
0xd, 0xa,\
" 1. a wooden comb.", 0xd, 0xa,\
" 2. a silver coin.", 0x0
combtxt db 0xd, 0xa,\
"Giving a Comb", 0xd, 0xa,\
"-------------", 0xd, 0xa,\
0xd, 0xa,\
"You hold a finely carved wooden comb in your hands. ",\
"It is a comb you", 0xd, 0xa,\
"have made yourself, the masterpiece that gave you ",\
"full rights in the", 0xd, 0xa,\
"guild. You are sacrificing not only its monetary ",\
"value, but its value to", 0xd, 0xa,\
"you personally.", 0xd, 0xa,\
0xd, 0xa,\
"You place the comb next to the knife, say a few words ",\
"asking Arattavesh", 0xd, 0xa,\
"to accept your payment, and walk back to the door to ",\
"the sanctum. A", 0xd, 0xa,\
"priest sprinkles water on you, and closes the heavy ",\
"door after you step", 0xd, 0xa,\
"outside.", 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
cointxt db 0xd, 0xa,\
"Giving a Coin", 0xd, 0xa,\
"-------------", 0xd, 0xa,\
0xd, 0xa,\
"You take out a silver coin from the pouch hanging ",\
"from your belt. It", 0xd, 0xa,\
"represents the work of several weeks as a cobbler.",\
0xd, 0xa,\
0xd, 0xa,\
"You take the coin and throw it to the fountain that ",\
"is behind the idol,", 0xd, 0xa,\
"where you hear it clink against other coins that have ",\
"been deposited", 0xd, 0xa,\
"previously.", 0xd, 0xa,\
0xd, 0xa,\
"You turn back and walk through the curtains to the ",\
"common side of the", 0xd, 0xa,\
"temple, where other devout are waiting for their turn ",\
"to enter the", 0xd, 0xa,\
"sanctum.", 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
taketxt db 0xd, 0xa,\
"Taking", 0xd, 0xa,\
"------", 0xd, 0xa,\
0xd, 0xa,\
"There it is. Right before you. You steal a glance ",\
"behing you hoping to", 0xd, 0xa,\
"make sure that nobody spots you in the darkness as ",\
"you reach out and", 0xd, 0xa,\
"grab...", 0xd, 0xa,\
" 1. the bowl.", 0xd, 0xa,\
" 2. the knife.", 0xd, 0xa,\
" 3. the idol.", 0x0
bowltxt db 0xd, 0xa,\
"Taking the Bowl", 0xd, 0xa,\
"---------------", 0xd, 0xa,\
0xd, 0xa,\
"The bowl you had offered just a week before is still ",\
"here. You had left", 0xd, 0xa,\
"it as a thanks of your husband's recovery, but now ",\
"your husband is gone,", 0xd, 0xa,\
"your fields are destroyed, and all this is the name ",\
"of Arattavesh.", 0xd, 0xa,\
0xd, 0xa,\
"If the gods shall curse you for breaching the ",\
"holiness of the sanctum", 0xd, 0xa,\
"let them, for you curse the gods too. You take that ",\
"which you dedicated", 0xd, 0xa,\
'to Arattavesh and quietly state "You have taken back ',\
"your gift and so I", 0xd, 0xa,\
'shall take back mine" before slipping back into the ',\
"night.", 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
knifetxt db 0xd, 0xa,\
"Taking the Knife", 0xd, 0xa,\
"----------------", 0xd, 0xa,\
0xd, 0xa,\
"The knife is very nicely made. You admire it for a ",\
"small while, before", 0xd, 0xa,\
"slipping it into the bag you carry around your ",\
"shoulders.", 0xd, 0xa,\
0xd, 0xa,\
"You aren't committing a sin, or if you are it's not a ",\
"great one. The", 0xd, 0xa,\
"chanter who lives in the main city has not yet come ",\
"and completed the", 0xd, 0xa,\
"dedication. The one who's knelt before the idol and ",\
"left it here has", 0xd, 0xa,\
"merely announced an intention to give it to their god ",\
"so it's still", 0xd, 0xa,\
"theirs, and they will not miss it.", 0xd, 0xa,\
0xd, 0xa,\
"If Nagiri holds up his end of the bargain your debt ",\
"shall be gone come", 0xd, 0xa,\
"tomorrow and you can leave the land you work but do ",\
"not own. You get", 0xd, 0xa,\
"excited, but then try to calm down. It is not over ",\
"yet.", 0xd, 0xa,\
0xd, 0xa,\
"You walk out into the evening crowd still in the ",\
"market before the", 0xd, 0xa,\
"sanctum. There are so many people here nobody will ",\
"remember and be able", 0xd, 0xa,\
"to speak against you.", 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
idoltxt db 0xd, 0xa,\
"Taking the Idol", 0xd, 0xa,\
"---------------", 0xd, 0xa,\
0xd, 0xa,\
"Here it is. The protector god of your village, taken ",\
"by force when you", 0xd, 0xa,\
"were but a small child.", 0xd, 0xa,\
0xd, 0xa,\
"They call her Arattavesh, after the river, but you ",\
"know better. As you", 0xd, 0xa,\
'lift the idol you whisper: "Panglya, you shall be ',\
'home soon."', 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
dotxt db 0xd, 0xa,\
"Doing", 0xd, 0xa,\
"-----", 0xd, 0xa,\
0xd, 0xa,\
"Yes, it is finally time. You make sure that ",\
"everything is just right,", 0xd, 0xa,\
"and...", 0xd, 0xa,\
" 1. take the knife.", 0xd, 0xa,\
" 2. raise your axe.", 0xd, 0xa,\
" 3. kneel before the idol.", 0x0
sacrificetxt db 0xd, 0xa,\
"Making a Sacrifice", 0xd, 0xa,\
"------------------", 0xd, 0xa,\
0xd, 0xa,\
"You take the blade, and think of the long nights ",\
"spent replaying the", 0xd, 0xa,\
"formula of the sacrifice in your head. You've seen ",\
"ones before, but", 0xd, 0xa,\
"never this one, for it is one that a priest must do ",\
"alone.", 0xd, 0xa,\
0xd, 0xa,\
"You say the words, and cut...", 0xd, 0xa,\
" 1. a loaf of bread.", 0xd, 0xa,\
" 2. your finger.", 0x0
breadtxt db 0xd, 0xa,\
"A Sacrifice of Bread", 0xd, 0xa,\
"--------------------", 0xd, 0xa,\
0xd, 0xa,\
"As Arattavesh gives you grain, you shall give her ",\
"back. A slice of every", 0xd, 0xa,\
"loaf made before the next new moon shall be hers, and ",\
"the bakers will be", 0xd, 0xa,\
"giving their share starting tomorrow. But this loaf ",\
"is special, the", 0xd, 0xa,\
"first loaf baked from new grain, and it is reserved ",\
"for the junior", 0xd, 0xa,\
"priest of the temple. Which is you.", 0xd, 0xa,\
0xd, 0xa,\
"You know that you shall not be too stingy and cut ",\
"only the skin. You", 0xd, 0xa,\
"also know you have to be exact and not cut a too big ",\
"of a slice off. But", 0xd, 0xa,\
"that is no issue. You end up with a slice that is ",\
"just right, and place", 0xd, 0xa,\
"it in the bowl before the idol.", 0xd, 0xa,\
0xd, 0xa,\
"After this is done, you lay the knife back down, and ",\
"recite one of the", 0xd, 0xa,\
"old hymns, too old for people to understand anymore. ",\
"You feel that", 0xd, 0xa,\
"Arattavesh is pleased in you as you walk up to the ",\
"roof of the temple", 0xd, 0xa,\
"house and then across to the end of the block.", 0xd,\
0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
bloodtxt db 0xd, 0xa,\
"A Sacrifice of Blood", 0xd, 0xa,\
"--------------------", 0xd, 0xa,\
0xd, 0xa,\
"It hurts a little but you do not care, as you let the ",\
"droplets of blood", 0xd, 0xa,\
"drip into the bowl. Just like mixing your blood with ",\
"that of your sworn", 0xd, 0xa,\
"sister cements your bond, so does giving it to your ",\
"god.", 0xd, 0xa,\
0xd, 0xa,\
"You are a fully fledged priest of Arattavesh, the one ",\
"who rules behind", 0xd, 0xa,\
"the waves and in the dark caverns of earth. You hurry ",\
"to your new family", 0xd, 0xa,\
"who are waiting at the foot of the mountain.", 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
iconoclasmtxt db 0xd, 0xa,\
"Iconoclasm", 0xd, 0xa,\
"----------", 0xd, 0xa,\
0xd, 0xa,\
"There is but one abomination in the eyes of gods bad ",\
"enough to warrant a", 0xd, 0xa,\
"death in the marshes. And that is the worship of ",\
"earthly images in their", 0xd, 0xa,\
"stead.", 0xd, 0xa,\
0xd, 0xa,\
"You raise your axe and let it fall onto the head of ",\
"the idol. There is a", 0xd, 0xa,\
"crunching sound and you see the wood split, maggots ",\
"crawling out of it.", 0xd, 0xa,\
"Of course, of course. The idol is as rotten as the ",\
"act of worshiping it.", 0xd, 0xa,\
0xd, 0xa,\
"The heathen ways are over again, and the temple shall ",\
"be cleansed. You", 0xd, 0xa,\
"raise your arms and shout as loud as you can: ",\
'"Witness me Arattavesh,', 0xd, 0xa,\
"for I will cleanse your house of the ways of the ",\
"Eluwing, and enact", 0xd, 0xa,\
'revenge on those who have it thus defiled!"', 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
prayertxt db 0xd, 0xa,\
"Prayer", 0xd, 0xa,\
"------", 0xd, 0xa,\
0xd, 0xa,\
'"You who will remain when I am gone', 0xd, 0xa,\
"To help my family in time of need", 0xd, 0xa,\
"To shield the eastern flank of this city", 0xd, 0xa,\
"To leave the graves of our ancestors safe", 0xd, 0xa,\
"To bring the flood as you have brought", 0xd, 0xa,\
'I ask you"', 0xd, 0xa,\
0xd, 0xa,\
"Press any key to return back to the beginning.", 0x0
crlf db 0xd, 0xa, 0x0
;***
;Quit the game
readquit:
;Check for keypress Q
cmp al, "Q"
je done
cmp al, "q"
je done
;Return
ret

26
make.sh Executable file
View File

@ -0,0 +1,26 @@
#!/bin/sh
cd CONVERT/
nasm DEC2HEX.ASM -f bin -o DEC2HEX.BIN
nasm HEX2DEC.ASM -f bin -o HEX2DEC.BIN
zip -r CONVERT.ZIP DEC2HEX.BIN DEC2HEX.ASM HEX2DEC.BIN HEX2DEC.ASM README.MD CC0 1>/dev/null
mv CONVERT.ZIP ..
cd ..
cd KEYCODE/
nasm KEYCODE.ASM -f bin -o KEYCODE.BIN
zip -r KEYCODE.ZIP KEYCODE.BIN KEYCODE.ASM README.MD LICENSE.MD 1>/dev/null
mv KEYCODE.ZIP ..
cd ..
cd ROT13/
nasm ROT13.ASM -f bin -o ROT13.BIN
zip -r ROT13.ZIP ROT13.BIN ROT13.ASM README.MD CC0 1>/dev/null
mv ROT13.ZIP ..
cd ..
cd TEMPLE/
nasm TEMPLE.ASM -f bin -o TEMPLE.BIN
zip -r TEMPLE.ZIP TEMPLE.BIN TEMPLE.ASM README.MD LICENSE.MD 1>/dev/null
mv TEMPLE.ZIP ..
cd ..