--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>QBasicApps</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
--- /dev/null
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
--- /dev/null
+v 01-01 12-31 tava\r
+n 01-01 12-31 5 reede\r
+e 10-04 opetajap\r
+e 10-31 rebased\r
+n 01-01 12-31 6 tuhi\r
+n 01-01 12-31 7 tuhi\r
+\r
--- /dev/null
+coff\r
+qb /run kk.bas
\ No newline at end of file
--- /dev/null
+mov dx, 37Ah\r
+mov al, 0\r
+out dx, al\r
+ret
\ No newline at end of file
--- /dev/null
+DECLARE SUB jooks ()\r
+DECLARE SUB suva ()\r
+DEFINT A-Z\r
+DECLARE SUB cle ()\r
+DECLARE SUB disp ()\r
+DIM SHARED bit(0 TO 16)\r
+\r
+suva\r
+jooks\r
+\r
+cle\r
+bit(10) = 0\r
+bit(14) = 0\r
+bit(6) = 0\r
+bit(2) = 0\r
+4\r
+disp\r
+GOTO 4\r
+\r
+SUB cle\r
+FOR a = 1 TO 16\r
+bit(a) = 1\r
+NEXT a\r
+END SUB\r
+\r
+SUB disp\r
+prt = &H378\r
+d = 0\r
+FOR a = 0 TO 3\r
+c = 2 ^ a\r
+FOR b = 4 TO 7\r
+d = d + 1\r
+c = c + (bit(d) * 2 ^ b)\r
+NEXT b\r
+\r
+OUT prt, c\r
+NEXT a\r
+END SUB\r
+\r
+SUB jooks\r
+2\r
+cle\r
+FOR a = 1 TO 16\r
+bit(16) = 1\r
+bit(a - 1) = 1\r
+bit(a) = 0\r
+PRINT a\r
+FOR b = 1 TO 1000\r
+disp\r
+NEXT b\r
+NEXT a\r
+GOTO 2\r
+\r
+END SUB\r
+\r
+SUB suva\r
+3\r
+cle\r
+FOR b = 1 TO 16\r
+IF RND * 100 > 50 THEN bit(b) = 0\r
+NEXT b\r
+FOR b = 1 TO 100\r
+disp\r
+NEXT b\r
+GOTO 3\r
+END SUB\r
+\r
--- /dev/null
+\r
+\r
+\r
+ Kooli Kell programmi kasutusjuhend\r
+\r
+2002.10
+\r
+Programmi, juhendi ja skeemi autor:\r
+Svjatoslav Agejenko\r
+n0@hot.ee
+www.hot.ee/n0/
+\r
+K\93ik on vabavara!\r
+\r
+Programm Kooli Kell on m\93eldud kella laskmiseks koolis, tundi sisse ja v\84lja.\r
+Samuti juhib programm arvuti k\81ljes olevat liidest, kahekohaliste numbrite\r
+n\84itamiseks (minutid / tunnid), 3 klahvilist klaviatuuri ja releed.\r
+Tundi sisse minev kell on 1 pikk ning 1 l\81hem helin. V\84ljaminev kell on 1\r
+tavaline pikk helin. Programm loeb aega arvuti s\81steemsest kellast.\r
+Kella laskmis ajad on organiseeritud failidesse *.PP .\r
+Aasta v\93i p\84evaplaani muutmiseks tuleb redakteerida vastavaid faile.\r
+(s\93nast P\84eva Plaan) Programm valib sobiva p\84evaplaani l\84htudes aastaplaanist,\r
+mis asub failis "aasta.ap" . Programmi saab kasutada arvutil millele on\r
+printeri pesasse (LPT1) \81hendatud spetsiaalne liides, liidese skeem on\r
+failis "skeem.bmp". Liides omab kolme nummerdatud nuppu paigutusega:\r
+\r
+ [1] [2]\r
+ [3]\r
+\r
+Programm on etten\84htud iseseisvalt t\94\94tama, kuid on ka v\93imalus erandkorras\r
+k\84sitsi kella lasta, aega muuta jne.. Programm eristab tavalisi nupuvajutusi\r
+ja topeltkl\93pse. Eesm\84rgiga suurendada funktsionaalsust v\84heste nuppudega.\r
+\r
+ Nuppude funktsioonid peamen\81\81s:\r
+\r
+[1] kl\93ps - laseb kella tundi sisse\r
+ topeltkl\93ps - laseb kella tunnist v\84lja\r
+[2] kl\93ps - l\84heb aja muutmis men\81\81sse\r
+ topeltkl\93ps - hakkab t\94\94le uuendatud graafikuga, vajalik p\84rast\r
+ sisendfailide redigeerimist.\r
+[3] kl\93ps - \81mardab s\81steemse aja t\84istunnini, vajalik aja\r
+ s\81nkroniseerimiseks.\r
+ topeltkl\93ps - laeb s\81steemse: aasta, kuu, p\84eva, tunnid, minutid\r
+ failist "sync.txt"\r
+\r
+ Nuppude funktsioonid aja muutmis men\81\81s:\r
+\r
+[1] kl\93ps - v\84hendab s\81steemsed tunnid/minutid 1. v\93rra\r
+[2] kl\93ps - suurendab s\81steemsed tunnid/minutid 1. v\93rra\r
+[3] kl\93ps - valib n\84itamiseks ja redigeerimiseks tunnid v\93i minutid.\r
+ topeltkl\93ps - l\84heb tagasi peamen\81\81sse.\r
+\r
+Aja muutmis men\81\81d tunneb \84ra selle j\84rgi et indikaator tunnid v\93i\r
+minutid vilgub, mitte ei p\93le nagu peamen\81\81s.\r
+\r
+\r
+\r
+ faili AASTA.AP formaat: (aastaplaan)\r
+\r
+\r
+v <kuu>-<p\84ev> <kuu>-<p\84ev> <p\84evaplaan>\r
+\r
+S\93nast vahemik. Paneb paika p\84evaplaani antud ajavahemikus. Esimene\r
+daatum peab kindlasti olema v\84iksem kui teine. St. kui on t\93esti vaja:\r
+\r
+v 10-4 2-1 eri\r
+\r
+tuleb kirjutada:\r
+\r
+v 10-4 12-31 eri\r
+v 1-1 2-1 eri\r
+\r
+P\84evaplaan kehtib vahemiku esimesest p\84evast kuni vahemiku viimase p\84evani.\r
+\r
+\r
+n <kuu>-<p\84ev> <kuu>-<p\84ev> <n\84dalap\84ev> <p\84evaplaan>\r
+\r
+S\93nast n\84dalap\84ev. sama mis "v" kuid: paneb paika p\84evaplaani antud\r
+ajavahemikus, antud n\84dalap\84eval. N\84dalap\84eva kirjeldatakse numbriga.\r
+n\84dala esimene p\84ev on esmasp\84ev, talle vastab number 1.\r
+\r
+\r
+e <kuu>-<p\84ev> <p\84evaplaan>\r
+\r
+S\93nast eriline. Paneb paika antud kuup\84evale antud p\84evaplaani. Sobib h\84sti\r
+erakorraliste l\81hendatud v\93i muul moel muudetud p\84evaplaanide kehtestamiseks.\r
+N\84iteks riigip\81had, spordip\84ev jne.\r
+\r
+Kui teatud p\84eva kohta ei k\84inud \81htegi kirjet siis toimib vaikimisi "tuhi"\r
+p\84evaplaan. Kui teatud p\84eva kohta k\84is mitu kirjet siis j\84\84b peale viimane.\r
+\r
+\r
+\r
+ failide *.PP formaat: (p\84evaplaanid)\r
+\r
+\r
+# <tund>:<minut> <kell>\r
+\r
+Laseb antud ajal antud kella. V\93imalikud kella helinad on:\r
+\r
+ sis -kell tundi sisse\r
+ val -kell tunnist v\84lja\r
+\r
+\r
+\r
+ faili SYNC.TXT formaat:\r
+\r
+faili esimesel kahel real peab olema j\84rgnev:\r
+\r
+KK-PP-AAAA\r
+TT:MM\r
+\r
+kus KK = kuu\r
+ PP = p\84ev\r
+ AAAA = aasta\r
+ TT = tunnid\r
+ MM = minutid\r
--- /dev/null
+DECLARE SUB num (a%)\r
+DECLARE SUB mntime ()\r
+DECLARE SUB showit ()\r
+DECLARE SUB ekrf (a%)\r
+DECLARE SUB ekr ()\r
+DECLARE SUB rese ()\r
+DECLARE SUB start ()\r
+DECLARE SUB boot ()\r
+DECLARE SUB getnad (g%, n%, d%, k%)\r
+DECLARE SUB initp (b$)\r
+DECLARE SUB getmd (a$, m%, d%)\r
+DECLARE SUB son (a$)\r
+DEFINT A-Z\r
+\r
+DECLARE SUB inita ()\r
+DECLARE SUB chm ()\r
+DECLARE SUB chd ()\r
+DECLARE SUB kell (a%)\r
+DECLARE SUB sync2 ()\r
+DECLARE SUB sync ()\r
+DECLARE SUB mnmain ()\r
+DECLARE SUB main ()\r
+DECLARE SUB getkey (kla%)\r
+DECLARE SUB klnait (k%)\r
+DECLARE SUB heli (a%)\r
+DECLARE SUB keys ()\r
+DECLARE SUB disp ()\r
+DIM SHARED bit(0 TO 7)\r
+DIM SHARED kl\r
+DIM SHARED hist(1 TO 3)\r
+DIM SHARED ap$(1 TO 500)\r
+DIM SHARED apl\r
+DIM SHARED pp$(1 TO 500)\r
+DIM SHARED ppl\r
+DIM SHARED prt, prt2\r
+DIM SHARED timo$\r
+DIM SHARED dato$\r
+DIM SHARED sona$(1 TO 50)\r
+DIM SHARED mitus\r
+DIM SHARED lp$\r
+DIM SHARED ndlp\r
+DIM SHARED pn$(1 TO 7)\r
+DIM SHARED bitt(1 TO 16)\r
+DIM SHARED modee, vilgu\r
+DIM SHARED tul(1 TO 2)\r
+\r
+start\r
+heli 4\r
+\r
+\r
+disp\r
+mnmain\r
+\r
+SUB chd\r
+b$ = "tuhi"\r
+IF apl = 0 THEN inita\r
+\r
+a$ = DATE$\r
+n1 = VAL(RIGHT$(a$, 4))\r
+n2 = VAL(LEFT$(a$, 2))\r
+a$ = LEFT$(a$, 5)\r
+n3 = VAL(RIGHT$(a$, 2))\r
+getnad n1, n2, n3, ndlp\r
+LOCATE 10, 1\r
+PRINT "n\84dalap\84ev:", pn$(ndlp)\r
+FOR a = 1 TO apl\r
+son ap$(a)\r
+SELECT CASE sona$(1)\r
+CASE "v"\r
+getmd sona$(2), m1, d1\r
+getmd sona$(3), m2, d2\r
+getmd DATE$, m3, d3\r
+IF m3 < m1 THEN GOTO 9\r
+IF m3 > m2 THEN GOTO 9\r
+IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9\r
+IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9\r
+b$ = sona$(4)\r
+CASE "n"\r
+getmd sona$(2), m1, d1\r
+getmd sona$(3), m2, d2\r
+getmd DATE$, m3, d3\r
+IF m3 < m1 THEN GOTO 9\r
+IF m3 > m2 THEN GOTO 9\r
+IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9\r
+IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9\r
+IF ndlp <> VAL(sona$(4)) THEN GOTO 9\r
+b$ = sona$(5)\r
+CASE "e"\r
+getmd sona$(2), m1, d1\r
+getmd DATE$, m2, d2\r
+IF (m1 = m2) AND (d1 = d2) THEN b$ = sona$(3)\r
+END SELECT\r
+9\r
+NEXT a\r
+\r
+IF b$ <> lp$ THEN initp b$\r
+lp$ = b$\r
+LOCATE 9, 1\r
+PRINT "p\84evaplaan:", lp$\r
+END SUB\r
+\r
+SUB chm\r
+showit\r
+a$ = DATE$\r
+IF a$ <> dato$ THEN chd\r
+dato$ = a$\r
+b = 0\r
+FOR a = 1 TO ppl\r
+son pp$(a)\r
+SELECT CASE sona$(1)\r
+CASE "#"\r
+getmd sona$(2), h1, m1\r
+getmd TIME$, h2, m2\r
+' PRINT h1, m1, h2, m2\r
+IF (h2 = h1) AND (m2 = m1) THEN\r
+IF sona$(3) = "sis" THEN b = 1\r
+IF sona$(3) = "val" THEN b = 2\r
+END IF\r
+END SELECT\r
+NEXT a\r
+\r
+IF b > 0 THEN kell b\r
+\r
+END SUB\r
+\r
+SUB disp\r
+CLS\r
+PRINT "Kooli Kell v 1.2 2002.10.10"\r
+PRINT "Programmi autor Svjatoslav Agejenko"\r
+\r
+END SUB\r
+\r
+SUB ekr\r
+FOR e = 1 TO 10\r
+c = 1\r
+c = c + 16 * bitt(1)\r
+c = c + 32 * bitt(2)\r
+c = c + 64 * bitt(3)\r
+c = c + 128 * bitt(4)\r
+OUT prt2, c\r
+\r
+c = 2\r
+c = c + 16 * bitt(5)\r
+c = c + 32 * bitt(6)\r
+c = c + 64 * bitt(7)\r
+c = c + 128 * bitt(8)\r
+OUT prt2, c\r
+\r
+c = 4\r
+c = c + 16 * bitt(9)\r
+c = c + 32 * bitt(10)\r
+c = c + 64 * bitt(11)\r
+c = c + 128 * bitt(12)\r
+OUT prt2, c\r
+\r
+c = 8\r
+c = c + 16 * bitt(13)\r
+c = c + 32 * bitt(14)\r
+c = c + 64 * bitt(15)\r
+c = c + 128 * bitt(16)\r
+OUT prt2, c\r
+\r
+\r
+NEXT e\r
+END SUB\r
+\r
+SUB ekrf (a)\r
+SELECT CASE (a)\r
+CASE 0\r
+bitt(1) = 0\r
+bitt(2) = 0\r
+bitt(3) = 0\r
+bitt(7) = 0\r
+bitt(5) = 0\r
+bitt(6) = 0\r
+bitt(8) = 1\r
+CASE 1\r
+bitt(2) = 0\r
+bitt(7) = 0\r
+CASE 2\r
+bitt(1) = 0\r
+bitt(3) = 0\r
+bitt(5) = 0\r
+bitt(7) = 0\r
+bitt(8) = 0\r
+CASE 3\r
+bitt(1) = 0\r
+bitt(2) = 0\r
+bitt(5) = 0\r
+bitt(8) = 0\r
+bitt(7) = 0\r
+CASE 4\r
+bitt(2) = 0\r
+bitt(6) = 0\r
+bitt(7) = 0\r
+bitt(8) = 0\r
+CASE 5\r
+bitt(1) = 0\r
+bitt(2) = 0\r
+bitt(5) = 0\r
+bitt(6) = 0\r
+bitt(8) = 0\r
+CASE 6\r
+bitt(1) = 0\r
+bitt(2) = 0\r
+bitt(3) = 0\r
+bitt(5) = 0\r
+bitt(6) = 0\r
+bitt(8) = 0\r
+CASE 7\r
+bitt(2) = 0\r
+bitt(7) = 0\r
+bitt(5) = 0\r
+CASE 8\r
+bitt(1) = 0\r
+bitt(2) = 0\r
+bitt(3) = 0\r
+bitt(7) = 0\r
+bitt(5) = 0\r
+bitt(6) = 0\r
+bitt(8) = 0\r
+CASE 9\r
+bitt(1) = 0\r
+bitt(2) = 0\r
+bitt(7) = 0\r
+bitt(5) = 0\r
+bitt(6) = 0\r
+bitt(8) = 0\r
+CASE 10\r
+bitt(15) = 0\r
+bitt(16) = 0\r
+bitt(12) = 0\r
+bitt(10) = 0\r
+bitt(9) = 0\r
+bitt(4) = 0\r
+CASE 11\r
+bitt(15) = 0\r
+bitt(4) = 0\r
+CASE 12\r
+bitt(15) = 0\r
+bitt(16) = 0\r
+bitt(9) = 0\r
+bitt(10) = 0\r
+bitt(11) = 0\r
+CASE 13\r
+bitt(15) = 0\r
+bitt(4) = 0\r
+bitt(16) = 0\r
+bitt(11) = 0\r
+bitt(9) = 0\r
+CASE 14\r
+bitt(15) = 0\r
+bitt(4) = 0\r
+bitt(12) = 0\r
+bitt(11) = 0\r
+CASE 15\r
+bitt(9) = 0\r
+bitt(4) = 0\r
+bitt(11) = 0\r
+bitt(12) = 0\r
+bitt(16) = 0\r
+CASE 16\r
+bitt(9) = 0\r
+bitt(4) = 0\r
+bitt(11) = 0\r
+bitt(12) = 0\r
+bitt(16) = 0\r
+bitt(10) = 0\r
+CASE 17\r
+bitt(4) = 0\r
+bitt(15) = 0\r
+bitt(16) = 0\r
+CASE 18\r
+bitt(4) = 0\r
+bitt(15) = 0\r
+bitt(16) = 0\r
+bitt(12) = 0\r
+bitt(11) = 0\r
+bitt(10) = 0\r
+bitt(9) = 0\r
+CASE 19\r
+bitt(4) = 0\r
+bitt(15) = 0\r
+bitt(16) = 0\r
+bitt(12) = 0\r
+bitt(11) = 0\r
+bitt(9) = 0\r
+END SELECT\r
+\r
+END SUB\r
+\r
+SUB getkey (kla)\r
+\r
+1\r
+IF vilgu = 1 THEN\r
+tmr = tmr + 1\r
+IF tmr > 5 THEN bitt(13) = tul(1): bitt(14) = tul(2) ELSE bitt(13) = 1: bitt(14) = 1\r
+IF tmr > 10 THEN\r
+tmr = 0\r
+END IF\r
+ELSE\r
+bitt(13) = tul(1)\r
+bitt(14) = tul(2)\r
+END IF\r
+\r
+b$ = LEFT$(TIME$, 5)\r
+IF b$ <> timo$ THEN chm\r
+timo$ = b$\r
+hist(1) = hist(1) + 1\r
+IF hist(1) > 20000 THEN hist(1) = 15000\r
+hist(2) = hist(2) + 1\r
+IF hist(2) > 20000 THEN hist(2) = 15000\r
+hist(3) = hist(3) + 1\r
+IF hist(3) > 20000 THEN hist(3) = 15000\r
+\r
+keys\r
+IF kl > 0 THEN\r
+ IF hist(kl) > 1 AND hist(kl) < 9 THEN\r
+ klnait kl + 3\r
+ kla = kl + 3\r
+ GOTO 4\r
+ ELSE\r
+ hist(kl) = 0\r
+ END IF\r
+END IF\r
+IF hist(1) = 10 THEN klnait 1: kla = 1: GOTO 4\r
+IF hist(2) = 10 THEN klnait 2: kla = 2: GOTO 4\r
+IF hist(3) = 10 THEN klnait 3: kla = 3: GOTO 4\r
+\r
+IF hist(1) > 11 AND hist(2) > 11 AND hist(3) > 11 THEN klnait 0\r
+LOCATE 7, 1\r
+PRINT TIME$\r
+LOCATE 8, 1\r
+PRINT DATE$\r
+GOTO 1\r
+4\r
+\r
+\r
+hist(1) = 10000\r
+hist(2) = 10000\r
+hist(3) = 10000\r
+\r
+FOR b = 1 TO 100\r
+SOUND 0, .1\r
+NEXT b\r
+IF kla > 3 THEN SOUND 4000, .1 ELSE SOUND 3000, .1\r
+\r
+\r
+\r
+END SUB\r
+\r
+SUB getmd (a$, m, d)\r
+b$ = LEFT$(a$, 5)\r
+m = VAL(LEFT$(b$, 2))\r
+d = VAL(RIGHT$(b$, 2))\r
+\r
+END SUB\r
+\r
+SUB getnad (g, n, d, k)\r
+LOCATE 11, 1\r
+PRINT g, n, d\r
+p = g\r
+m = n - 2\r
+IF n > 2 GOTO 120\r
+p = p - 1: m = m + 12\r
+120\r
+c = INT(p / 100)\r
+y = p - c * 100\r
+w = d + INT((13 * m - 1) / 5) + y + INT(y / 4) + INT(c / 4) - 2 * c\r
+k = w - 7 * INT(w / 7)\r
+IF k = 0 THEN k = 7\r
+END SUB\r
+\r
+SUB heli (a)\r
+'GOTO 10\r
+SELECT CASE a\r
+CASE 1\r
+FOR c = 1 TO 5\r
+SOUND 3000, 1\r
+SOUND 0, 1\r
+NEXT c\r
+\r
+CASE 2\r
+FOR c = 1 TO 5\r
+SOUND 2500, 1\r
+SOUND 0, 2\r
+NEXT c\r
+SOUND 2500, 10\r
+\r
+CASE 3\r
+FOR a = 1 TO 10\r
+SOUND 500, .5\r
+SOUND 1500, .5\r
+SOUND 2000, .5\r
+SOUND 1520, .5\r
+NEXT a\r
+\r
+\r
+CASE 4\r
+FOR a = 800 TO 1000 STEP 10\r
+SOUND a, .1\r
+SOUND a * 3, .1\r
+SOUND 0, 1\r
+NEXT a\r
+10\r
+\r
+END SELECT\r
+\r
+\r
+END SUB\r
+\r
+SUB inita\r
+apl = 0\r
+OPEN "aasta.ap" FOR INPUT AS #1\r
+5\r
+IF EOF(1) <> 0 THEN GOTO 3\r
+LINE INPUT #1, a$\r
+apl = apl + 1\r
+ap$(apl) = a$\r
+GOTO 5\r
+3\r
+CLOSE #1\r
+END SUB\r
+\r
+SUB initp (b$)\r
+ppl = 0\r
+OPEN b$ + ".pp" FOR INPUT AS #1\r
+6\r
+IF EOF(1) <> 0 THEN GOTO 7\r
+LINE INPUT #1, a$\r
+ppl = ppl + 1\r
+pp$(ppl) = a$\r
+GOTO 6\r
+7\r
+CLOSE #1\r
+END SUB\r
+\r
+SUB kell (a)\r
+heli 3\r
+\r
+SELECT CASE a\r
+CASE 1\r
+OUT prt, 255\r
+FOR b = 1 TO 80\r
+SOUND 0, 1\r
+NEXT b\r
+OUT prt, 0\r
+FOR b = 1 TO 15\r
+SOUND 0, 1\r
+NEXT b\r
+OUT prt, 255\r
+FOR b = 1 TO 15\r
+SOUND 0, 1\r
+NEXT b\r
+OUT prt, 0\r
+\r
+CASE 2\r
+OUT prt, 255\r
+FOR b = 1 TO 80\r
+SOUND 0, 1\r
+NEXT b\r
+OUT prt, 0\r
+\r
+END SELECT\r
+END SUB\r
+\r
+SUB keys\r
+kl = 0\r
+OUT prt, 0\r
+8\r
+a = INP(prt)\r
+b = INP(prt)\r
+IF a <> b THEN GOTO 8\r
+\r
+b = 128\r
+FOR c = 0 TO 7\r
+d = INT(a / b)\r
+bit(c) = d\r
+a = a - (b * d)\r
+b = b / 2\r
+NEXT c\r
+\r
+IF bit(4) = 1 AND bit(6) = 1 THEN bit(4) = 0: bit(6) = 0: kl = 3\r
+IF bit(6) = 1 THEN kl = 2\r
+IF bit(4) = 1 THEN kl = 1\r
+\r
+a$ = INKEY$\r
+IF a$ = CHR$(0) + "K" THEN kl = 1\r
+IF a$ = CHR$(0) + "M" THEN kl = 2\r
+IF a$ = CHR$(0) + "P" THEN kl = 3\r
+ekr\r
+END SUB\r
+\r
+SUB klnait (k)\r
+\r
+IF k = 3 THEN c = 3 ELSE c = 1\r
+IF k = 6 THEN c = 14\r
+LOCATE 5, 6\r
+COLOR 7, c\r
+PRINT "<kesk>"\r
+COLOR 7, 0\r
+\r
+IF k = 1 THEN c = 3 ELSE c = 1\r
+IF k = 4 THEN c = 14\r
+LOCATE 4, 1\r
+COLOR 7, c\r
+PRINT "<vasak>"\r
+COLOR 7, 0\r
+\r
+IF k = 2 THEN c = 3 ELSE c = 1\r
+IF k = 5 THEN c = 14\r
+LOCATE 4, 10\r
+COLOR 7, c\r
+PRINT "<parem>"\r
+COLOR 7, 0\r
+\r
+END SUB\r
+\r
+SUB mnmain\r
+2\r
+getkey a\r
+IF a = 6 THEN sync\r
+IF a = 3 THEN sync2\r
+\r
+IF a = 1 THEN kell 1\r
+IF a = 4 THEN kell 2\r
+\r
+IF a = 2 THEN mntime\r
+IF a = 5 THEN rese\r
+GOTO 2\r
+\r
+END SUB\r
+\r
+SUB mntime\r
+vilgu = 1\r
+11\r
+showit\r
+getkey a\r
+\r
+IF modee = 1 THEN\r
+ b = VAL(LEFT$(TIME$, 2))\r
+ c = 0\r
+ IF a = 1 THEN c = 1: b = b - 1\r
+ IF a = 2 THEN c = 1: b = b + 1\r
+ IF b < 0 THEN b = 0\r
+ IF b > 23 THEN b = 23\r
+ d$ = STR$(b)\r
+ IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1)\r
+ IF LEN(d$) < 2 THEN d$ = "0" + d$\r
+ e$ = d$ + RIGHT$(TIME$, 6)\r
+ IF c = 1 THEN TIME$ = e$\r
+ELSE\r
+ b = VAL(RIGHT$(LEFT$(TIME$, 5), 2))\r
+ c = 0\r
+ IF a = 1 THEN c = 1: b = b - 1\r
+ IF a = 2 THEN c = 1: b = b + 1\r
+ IF b < 0 THEN b = 0\r
+ IF b > 59 THEN b = 59\r
+ d$ = STR$(b)\r
+ IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1)\r
+ IF LEN(d$) < 2 THEN d$ = "0" + d$\r
+ e$ = LEFT$(TIME$, 3) + d$ + RIGHT$(TIME$, 3)\r
+ IF c = 1 THEN TIME$ = e$\r
+END IF\r
+\r
+IF a = 3 THEN\r
+IF modee = 1 THEN modee = 2 ELSE modee = 1\r
+END IF\r
+\r
+IF a = 6 THEN GOTO 12\r
+GOTO 11\r
+12\r
+vilgu = 0\r
+modee = 2\r
+END SUB\r
+\r
+SUB num (a)\r
+\r
+FOR b = 1 TO 12\r
+bitt(b) = 1\r
+NEXT b\r
+bitt(15) = 1\r
+bitt(16) = 1\r
+\r
+b = INT(a / 10)\r
+c = a - (10 * b)\r
+ekrf b\r
+ekrf c + 10\r
+END SUB\r
+\r
+SUB rese\r
+heli 4\r
+timo$ = ""\r
+dato$ = ""\r
+apl = 0\r
+END SUB\r
+\r
+SUB showit\r
+a$ = LEFT$(TIME$, 5)\r
+IF modee = 1 THEN\r
+b = VAL(LEFT$(a$, 2))\r
+tul(1) = 1\r
+tul(2) = 0\r
+ELSE\r
+b = VAL(RIGHT$(a$, 2))\r
+tul(1) = 0\r
+tul(2) = 1\r
+END IF\r
+LOCATE 15, 1\r
+PRINT b\r
+num b\r
+\r
+\r
+END SUB\r
+\r
+SUB son (a$)\r
+\r
+FOR b = 1 TO 50\r
+sona$(b) = ""\r
+NEXT b\r
+mitus = 0\r
+\r
+b = 1\r
+FOR c = 1 TO LEN(a$)\r
+d$ = RIGHT$(LEFT$(a$, c), 1)\r
+IF d$ = " " OR d$ = CHR$(9) THEN\r
+b = 1\r
+ELSE\r
+IF b = 1 THEN b = 0: mitus = mitus + 1\r
+sona$(mitus) = sona$(mitus) + d$\r
+END IF\r
+NEXT c\r
+\r
+\r
+END SUB\r
+\r
+SUB start\r
+pn$(1) = "esmasp\84ev"\r
+pn$(2) = "teisip\84ev"\r
+pn$(3) = "kolmap\84ev"\r
+pn$(4) = "neljap\84ev"\r
+pn$(5) = "reede"\r
+pn$(6) = "laup\84ev"\r
+pn$(7) = "p\81hap\84ev"\r
+\r
+prt = &H37A\r
+prt2 = &H378\r
+hist(1) = 10000\r
+hist(2) = 10000\r
+hist(3) = 10000\r
+\r
+FOR a = 1 TO 16\r
+bitt(a) = 1\r
+NEXT a\r
+modee = 2\r
+vilgu = 0\r
+tul(1) = 1\r
+tul(2) = 1\r
+END SUB\r
+\r
+SUB sync\r
+OPEN "sync.txt" FOR INPUT AS #1\r
+LINE INPUT #1, a$\r
+DATE$ = a$\r
+LINE INPUT #1, a$\r
+TIME$ = a$\r
+CLOSE #1\r
+\r
+heli 2\r
+END SUB\r
+\r
+SUB sync2\r
+a$ = TIME$\r
+a$ = LEFT$(a$, 5)\r
+b = VAL(RIGHT$(a$, 2))\r
+c = VAL(LEFT$(a$, 2))\r
+IF b >= 30 THEN c = c + 1\r
+b = 0\r
+IF c > 23 THEN c = c - 24\r
+a$ = RIGHT$(STR$(c), LEN(STR$(c)) - 1)\r
+b$ = RIGHT$(STR$(b), LEN(STR$(b)) - 1)\r
+IF LEN(a$) < 2 THEN a$ = "0" + a$\r
+IF LEN(b$) < 2 THEN b$ = "0" + b$\r
+a$ = a$ + ":" + b$\r
+\r
+'LOCATE 10, 1\r
+'PRINT a$\r
+\r
+TIME$ = a$\r
+\r
+heli 1\r
+END SUB\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 10:45 val\r
+\r
+# 10:55 sis\r
+# 11:20 val\r
+\r
+# 11:40 sis\r
+# 12:05 val\r
+\r
+# 12:15 sis\r
+# 12:40 val\r
+\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:10 val\r
+\r
+# 09:20 sis\r
+# 10:00 val\r
+\r
+# 10:10 sis\r
+# 10:50 val\r
+\r
+# 11:30 sis\r
+# 12:10 val\r
+\r
+# 12:20 sis\r
+# 13:00 val\r
+\r
+# 13:10 sis\r
+# 13:50 val\r
+\r
+# 14:00 sis\r
+# 14:40 val\r
+\r
+# 14:45 sis\r
+# 15:30 val\r
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 11:05 val\r
+\r
+# 11:35 sis\r
+# 12:20 val\r
+\r
+# 12:30 sis\r
+# 13:15 val\r
+\r
+# 13:20 sis\r
+# 14:05 val\r
+\r
+# 14:10 sis\r
+# 14:55 val\r
+\r
+# 15:00 sis\r
+# 15:45 val\r
--- /dev/null
+09-06-2002\r
+15:38\r
+\r
+kuu-paev-aasta\r
+tunnid-minutid
\ No newline at end of file
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 11:05 val\r
+\r
+# 11:35 sis\r
+# 12:20 val\r
+\r
+# 12:30 sis\r
+# 13:15 val\r
+\r
+# 13:25 sis\r
+# 14:10 val\r
+\r
+# 14:20 sis\r
+# 15:05 val\r
+\r
+# 15:10 sis\r
+# 15:55 val\r
+\r
+# 16:00 sis\r
+# 16:45 val\r
+\r
+# 16:50 sis\r
+# 17:45 val\r
+\r
+# 17:50 sis\r
+# 18:25 val\r
+\r
+# 18:30 sis\r
+# 19:15 val\r
+\r
--- /dev/null
+v 01-01 12-31 tava\r
+n 01-01 12-31 5 reede\r
+e 10-04 opetajap\r
+e 10-31 rebased\r
+e 04-17 luhend\r
+e 04-18 tuhi\r
+e 04-30 luhend\r
+e 05-01 tuhi\r
+e 06-23 tuhi\r
+e 06-24 tuhi\r
+n 01-01 12-31 6 tuhi\r
+n 01-01 12-31 7 tuhi\r
+v 07-01 08-31 tuhi\r
+\r
--- /dev/null
+DECLARE SUB dispt ()\r
+' Svjatoslav Agejenko\r
+' E-mail: svjatoslavagejenko@gmail.com\r
+' Homepage: www.hot.ee/n0/\r
+\r
+DECLARE SUB dispp ()\r
+DECLARE SUB displukk ()\r
+DECLARE SUB kola (a%)\r
+DECLARE SUB rese ()\r
+DECLARE SUB start ()\r
+DECLARE SUB getnad (g%, n%, d%, k%)\r
+DECLARE SUB initp (b$)\r
+DECLARE SUB getmd (a$, m%, d%)\r
+DECLARE SUB son (a$)\r
+DECLARE SUB inita ()\r
+DECLARE SUB chm ()\r
+DECLARE SUB chd ()\r
+DECLARE SUB kell (a%)\r
+DECLARE SUB sync2 ()\r
+DECLARE SUB sync ()\r
+DECLARE SUB mnmain ()\r
+DECLARE SUB heli (a%)\r
+DECLARE SUB disp ()\r
+DEFINT A-Z\r
+\r
+DIM SHARED ap$(1 TO 500)\r
+DIM SHARED apl\r
+DIM SHARED pp$(1 TO 500)\r
+DIM SHARED ppl\r
+DIM SHARED prt, prt2\r
+DIM SHARED timo$\r
+DIM SHARED dato$\r
+DIM SHARED sona$(1 TO 50)\r
+DIM SHARED mitus\r
+DIM SHARED lp$\r
+DIM SHARED ndlp\r
+DIM SHARED pn$(1 TO 7)\r
+DIM SHARED lk$\r
+DIM SHARED ssave\r
+DIM SHARED ssavel\r
+DIM SHARED timero AS LONG\r
+DIM SHARED kblukk\r
+DIM SHARED tunnidara\r
+\r
+start\r
+\r
+\r
+disp\r
+mnmain\r
+\r
+SUB chd\r
+b$ = "tuhi"\r
+IF apl = 0 THEN inita\r
+\r
+a$ = DATE$\r
+n1 = VAL(RIGHT$(a$, 4))\r
+n2 = VAL(LEFT$(a$, 2))\r
+a$ = LEFT$(a$, 5)\r
+n3 = VAL(RIGHT$(a$, 2))\r
+getnad n1, n2, n3, ndlp\r
+FOR a = 1 TO apl\r
+son ap$(a)\r
+SELECT CASE sona$(1)\r
+CASE "v"\r
+getmd sona$(2), m1, d1\r
+getmd sona$(3), m2, d2\r
+getmd DATE$, m3, d3\r
+IF m3 < m1 THEN GOTO 9\r
+IF m3 > m2 THEN GOTO 9\r
+IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9\r
+IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9\r
+b$ = sona$(4)\r
+CASE "n"\r
+getmd sona$(2), m1, d1\r
+getmd sona$(3), m2, d2\r
+getmd DATE$, m3, d3\r
+IF m3 < m1 THEN GOTO 9\r
+IF m3 > m2 THEN GOTO 9\r
+IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9\r
+IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9\r
+IF ndlp <> VAL(sona$(4)) THEN GOTO 9\r
+b$ = sona$(5)\r
+CASE "e"\r
+getmd sona$(2), m1, d1\r
+getmd DATE$, m2, d2\r
+IF (m1 = m2) AND (d1 = d2) THEN b$ = sona$(3)\r
+END SELECT\r
+9\r
+NEXT a\r
+\r
+IF b$ <> lp$ THEN initp b$\r
+lp$ = b$\r
+tunnidara = 0\r
+dispp\r
+disp\r
+END SUB\r
+\r
+SUB chm\r
+a$ = DATE$\r
+IF a$ <> dato$ THEN chd\r
+dato$ = a$\r
+b = 0\r
+FOR a = 1 TO ppl\r
+son pp$(a)\r
+SELECT CASE sona$(1)\r
+CASE "#"\r
+getmd sona$(2), h1, m1\r
+getmd TIME$, h2, m2\r
+' PRINT h1, m1, h2, m2\r
+IF (h2 = h1) AND (m2 = m1) THEN\r
+IF sona$(3) = "sis" THEN b = 1\r
+IF sona$(3) = "val" THEN b = 2\r
+END IF\r
+END SELECT\r
+NEXT a\r
+\r
+IF (tunnidara = 0) AND (b > 0) THEN kell b\r
+ssave = ssave + 1\r
+END SUB\r
+\r
+SUB disp\r
+CLS\r
+PRINT "Kooli Kell (mini) v 1.1 2003.3"\r
+PRINT "Programmi autor Svjatoslav Agejenko E-mail: n0@hot.ee"\r
+PRINT ""\r
+PRINT "s - kell tundi sisse v - kell tunnist v�lja"\r
+PRINT "a - sisesta uus aeg d - sisesta uus daatum"\r
+PRINT "u - �mardab aja t�istunnini l - laeb aja failist SYNC.TXT"\r
+PRINT "7 - 1 minut tagasi 8 - 1 minut edasi"\r
+PRINT "4 - 1 tund tagasi 5 - 1 tund edasi"\r
+PRINT "r - programmi restart q - programmist v�lja"\r
+PRINT " j - j�tab k�ik tunnid t�na �ra"\r
+\r
+dispp\r
+\r
+LOCATE 12, 15\r
+PRINT "Kuu-P�ev-Aasta (USA standard)"\r
+\r
+\r
+LOCATE 17\r
+\r
+FOR a = 1 TO ppl\r
+IF pp$(a) <> SPACE$(LEN(pp$(a))) THEN\r
+ PRINT pp$(a);\r
+ PRINT SPACE$(15 - LEN(pp$(a)));\r
+END IF\r
+NEXT a\r
+\r
+displukk\r
+dispt\r
+END SUB\r
+\r
+SUB displukk\r
+LOCATE 1, 40\r
+IF kblukk = 1 THEN\r
+ COLOR 0, 7\r
+ PRINT "Klaviatuur lukus! Vajuta CTRL+L"\r
+ COLOR 7, 0\r
+ELSE\r
+ PRINT " "\r
+END IF\r
+END SUB\r
+\r
+SUB dispp\r
+IF ndlp = 0 THEN GOTO 14\r
+LOCATE 14, 1\r
+PRINT "n�dalap�ev:", pn$(ndlp)\r
+LOCATE 15, 1\r
+PRINT "p�evaplaan:", lp$\r
+14\r
+END SUB\r
+\r
+SUB dispt\r
+LOCATE 16, 20\r
+COLOR 12 + 15, 0\r
+IF tunnidara = 1 THEN\r
+ PRINT "T�na on k�ik tunnid �ra j�etud"\r
+ELSE\r
+ PRINT " "\r
+END IF\r
+COLOR 7, 0\r
+END SUB\r
+\r
+SUB getmd (a$, m, d)\r
+b$ = LEFT$(a$, 5)\r
+m = VAL(LEFT$(b$, 2))\r
+d = VAL(RIGHT$(b$, 2))\r
+\r
+END SUB\r
+\r
+SUB getnad (g, n, d, k)\r
+'LOCATE 11, 1\r
+'PRINT g, n, d\r
+p = g\r
+m = n - 2\r
+IF n > 2 GOTO 120\r
+p = p - 1: m = m + 12\r
+120\r
+c = INT(p / 100)\r
+y = p - c * 100\r
+w = d + INT((13 * m - 1) / 5) + y + INT(y / 4) + INT(c / 4) - 2 * c\r
+k = w - 7 * INT(w / 7)\r
+IF k = 0 THEN k = 7\r
+END SUB\r
+\r
+SUB heli (a)\r
+'GOTO 10\r
+SELECT CASE a\r
+CASE 1\r
+FOR c = 1 TO 5\r
+SOUND 3000, 1\r
+SOUND 0, 1\r
+NEXT c\r
+\r
+CASE 2\r
+FOR c = 1 TO 5\r
+SOUND 2500, 1\r
+SOUND 0, 2\r
+NEXT c\r
+SOUND 2500, 10\r
+\r
+CASE 3\r
+FOR a = 1 TO 10\r
+SOUND 500, .5\r
+SOUND 1500, .5\r
+SOUND 2000, .5\r
+SOUND 1520, .5\r
+NEXT a\r
+\r
+\r
+CASE 4\r
+FOR a = 800 TO 1000 STEP 10\r
+SOUND a, .1\r
+SOUND a * 3, .1\r
+SOUND 0, 1\r
+NEXT a\r
+10\r
+\r
+END SELECT\r
+\r
+\r
+END SUB\r
+\r
+SUB inita\r
+apl = 0\r
+OPEN "aasta.ap" FOR INPUT AS #1\r
+5\r
+IF EOF(1) <> 0 THEN GOTO 3\r
+LINE INPUT #1, a$\r
+apl = apl + 1\r
+ap$(apl) = a$\r
+GOTO 5\r
+3\r
+CLOSE #1\r
+END SUB\r
+\r
+SUB initp (b$)\r
+ppl = 0\r
+OPEN b$ + ".pp" FOR INPUT AS #1\r
+6\r
+IF EOF(1) <> 0 THEN GOTO 7\r
+LINE INPUT #1, a$\r
+ppl = ppl + 1\r
+pp$(ppl) = a$\r
+GOTO 6\r
+7\r
+CLOSE #1\r
+END SUB\r
+\r
+SUB kell (a)\r
+b$ = TIME$ + DATE$\r
+IF b$ <> lk$ THEN lk$ = b$ ELSE GOTO 2\r
+\r
+heli 3\r
+\r
+SELECT CASE a\r
+CASE 1\r
+kola 4\r
+FOR b = 1 TO 15\r
+SOUND 0, 1\r
+NEXT b\r
+kola 1\r
+CASE 2\r
+kola 5\r
+END SELECT\r
+2\r
+END SUB\r
+\r
+SUB kola (a)\r
+timero = TIMER\r
+11\r
+FOR b = 1 TO 100\r
+OUT prt, 0\r
+OUT prt, 255\r
+NEXT b\r
+IF ABS(timero - TIMER) < a THEN GOTO 11\r
+END SUB\r
+\r
+SUB mnmain\r
+1\r
+b$ = LEFT$(TIME$, 5)\r
+IF b$ <> timo$ THEN chm\r
+timo$ = b$\r
+\r
+a$ = INKEY$\r
+\r
+IF a$ <> "" THEN\r
+IF ssave > ssavel THEN disp\r
+ssave = 0\r
+END IF\r
+\r
+IF a$ = CHR$(12) THEN\r
+ IF kblukk = 1 THEN kblukk = 0 ELSE kblukk = 1\r
+ displukk\r
+END IF\r
+IF kblukk = 1 THEN a$ = ""\r
+\r
+IF a$ = "s" THEN kell 1\r
+IF a$ = "v" THEN kell 2\r
+\r
+IF a$ = "a" THEN\r
+CLS\r
+PRINT " vana aeg: " + TIME$\r
+INPUT "sisesta uus aeg (TT:MM:SS): ", b$\r
+IF LEN(b$) <> 8 THEN GOTO 12\r
+TIME$ = b$\r
+timo$ = ""\r
+12\r
+disp\r
+END IF\r
+\r
+IF a$ = "d" THEN\r
+CLS\r
+PRINT " vana daatum: " + DATE$\r
+INPUT "sisesta uus daatum (KK-PP-AAAA): ", b$\r
+IF LEN(b$) <> 10 THEN GOTO 13\r
+DATE$ = b$\r
+timo$ = ""\r
+13\r
+disp\r
+END IF\r
+\r
+IF a$ = "7" OR a$ = "8" THEN\r
+ b = VAL(RIGHT$(LEFT$(TIME$, 5), 2))\r
+ IF a$ = "7" THEN b = b - 1\r
+ IF a$ = "8" THEN b = b + 1\r
+ IF b < 0 THEN b = 0\r
+ IF b > 59 THEN b = 59\r
+ d$ = STR$(b)\r
+ IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1)\r
+ IF LEN(d$) < 2 THEN d$ = "0" + d$\r
+ e$ = LEFT$(TIME$, 3) + d$ + RIGHT$(TIME$, 3)\r
+ TIME$ = e$\r
+END IF\r
+\r
+IF a$ = "4" OR a$ = "5" THEN\r
+ b = VAL(LEFT$(TIME$, 2))\r
+ IF a$ = "4" THEN b = b - 1\r
+ IF a$ = "5" THEN b = b + 1\r
+ IF b < 0 THEN b = 0\r
+ IF b > 23 THEN b = 23\r
+ d$ = STR$(b)\r
+ IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1)\r
+ IF LEN(d$) < 2 THEN d$ = "0" + d$\r
+ e$ = d$ + RIGHT$(TIME$, 6)\r
+ TIME$ = e$\r
+END IF\r
+\r
+IF a$ = "u" THEN sync2\r
+IF a$ = "l" THEN sync\r
+\r
+IF a$ = "r" THEN rese\r
+IF a$ = "q" THEN SYSTEM\r
+\r
+IF a$ = "j" THEN\r
+IF tunnidara = 0 THEN tunnidara = 1 ELSE tunnidara = 0\r
+dispt\r
+END IF\r
+\r
+IF ssave <= ssavel THEN\r
+ LOCATE 11, 1\r
+ PRINT TIME$\r
+ LOCATE 12, 1\r
+ PRINT DATE$\r
+ELSE\r
+ IF ABS(TIMER - timero) > 10 THEN\r
+ CLS\r
+ kblukk = 1\r
+ FOR b = 1 TO 20\r
+ LOCATE RND * 22 + 1, RND * 79 + 1\r
+ IF RND * 100 < 50 THEN PRINT "*" ELSE PRINT "."\r
+ NEXT b\r
+ LOCATE RND * 22 + 1, RND * 50 + 1\r
+ COLOR 0, 7\r
+ PRINT "< " + LEFT$(TIME$, 2);\r
+ COLOR 16, 7\r
+ PRINT ":";\r
+ COLOR 0, 7\r
+ PRINT RIGHT$(LEFT$(TIME$, 5), 2) + " >"\r
+ COLOR 7, 0\r
+ timero = TIMER\r
+ END IF\r
+END IF\r
+GOTO 1\r
+\r
+\r
+END SUB\r
+\r
+SUB rese\r
+heli 4\r
+timo$ = ""\r
+dato$ = ""\r
+apl = 0\r
+END SUB\r
+\r
+SUB son (a$)\r
+\r
+FOR b = 1 TO 50\r
+sona$(b) = ""\r
+NEXT b\r
+mitus = 0\r
+\r
+b = 1\r
+FOR c = 1 TO LEN(a$)\r
+d$ = RIGHT$(LEFT$(a$, c), 1)\r
+IF d$ = " " OR d$ = CHR$(9) THEN\r
+b = 1\r
+ELSE\r
+IF b = 1 THEN b = 0: mitus = mitus + 1\r
+sona$(mitus) = sona$(mitus) + d$\r
+END IF\r
+NEXT c\r
+\r
+\r
+END SUB\r
+\r
+SUB start\r
+pn$(1) = "esmasp�ev"\r
+pn$(2) = "teisip�ev"\r
+pn$(3) = "kolmap�ev"\r
+pn$(4) = "neljap�ev"\r
+pn$(5) = "reede"\r
+pn$(6) = "laup�ev"\r
+pn$(7) = "p�hap�ev"\r
+\r
+prt = &H378\r
+\r
+ssavel = 2\r
+kblukk = 1\r
+tunnidara = 0\r
+END SUB\r
+\r
+SUB sync\r
+OPEN "sync.txt" FOR INPUT AS #1\r
+LINE INPUT #1, a$\r
+DATE$ = a$\r
+LINE INPUT #1, a$\r
+TIME$ = a$\r
+CLOSE #1\r
+\r
+heli 2\r
+END SUB\r
+\r
+SUB sync2\r
+a$ = TIME$\r
+a$ = LEFT$(a$, 5)\r
+b = VAL(RIGHT$(a$, 2))\r
+c = VAL(LEFT$(a$, 2))\r
+IF b >= 30 THEN c = c + 1\r
+b = 0\r
+IF c > 23 THEN c = c - 24\r
+a$ = RIGHT$(STR$(c), LEN(STR$(c)) - 1)\r
+b$ = RIGHT$(STR$(b), LEN(STR$(b)) - 1)\r
+IF LEN(a$) < 2 THEN a$ = "0" + a$\r
+IF LEN(b$) < 2 THEN b$ = "0" + b$\r
+a$ = a$ + ":" + b$\r
+\r
+'LOCATE 10, 1\r
+'PRINT a$\r
+\r
+TIME$ = a$\r
+\r
+heli 1\r
+END SUB\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:00 val\r
+\r
+# 09:10 sis\r
+# 09:40 val\r
+\r
+# 09:50 sis\r
+# 10:20 val\r
+\r
+# 10:30 sis\r
+# 11:00 val\r
+\r
+# 11:30 sis\r
+# 12:00 val\r
+\r
+# 12:10 sis\r
+# 12:40 val\r
+\r
+# 12:50 sis\r
+# 13:20 val\r
+\r
+# 13:30 sis\r
+# 14:00 val\r
+\r
+# 14:05 sis\r
+# 14:35 val\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 10:45 val\r
+\r
+# 10:55 sis\r
+# 11:20 val\r
+\r
+# 11:40 sis\r
+# 12:05 val\r
+\r
+# 12:15 sis\r
+# 12:40 val\r
+\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:10 val\r
+\r
+# 09:20 sis\r
+# 10:00 val\r
+\r
+# 10:10 sis\r
+# 10:50 val\r
+\r
+# 11:30 sis\r
+# 12:10 val\r
+\r
+# 12:20 sis\r
+# 13:00 val\r
+\r
+# 13:10 sis\r
+# 13:50 val\r
+\r
+# 14:00 sis\r
+# 14:40 val\r
+\r
+# 14:45 sis\r
+# 15:30 val\r
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 11:05 val\r
+\r
+# 11:35 sis\r
+# 12:20 val\r
+\r
+# 12:30 sis\r
+# 13:15 val\r
+\r
+# 13:20 sis\r
+# 14:05 val\r
+\r
+# 14:10 sis\r
+# 14:55 val\r
+\r
+# 15:00 sis\r
+# 15:45 val\r
--- /dev/null
+02-03-2003\r
+11:32\r
+\r
+kuu-paev-aasta\r
+tunnid-minutid
\ No newline at end of file
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 11:05 val\r
+\r
+# 11:35 sis\r
+# 12:20 val\r
+\r
+# 12:30 sis\r
+# 13:15 val\r
+\r
+# 13:25 sis\r
+# 14:10 val\r
+\r
+# 14:20 sis\r
+# 15:05 val\r
+\r
+# 15:10 sis\r
+# 15:55 val\r
+\r
+# 16:00 sis\r
+# 16:45 val\r
+\r
+# 16:50 sis\r
+# 17:35 val
\ No newline at end of file
--- /dev/null
+v 01-01 12-31 tava\r
+n 01-01 12-31 5 reede\r
+e 04-17 luhend\r
+e 04-18 tuhi\r
+e 04-30 luhend\r
+e 05-01 tuhi\r
+e 06-23 tuhi\r
+e 06-24 tuhi\r
+n 01-01 12-31 6 tuhi\r
+n 01-01 12-31 7 tuhi\r
+v 07-01 08-31 tuhi\r
+\r
--- /dev/null
+ Kooli Kell 3 programmi kasutusjuhend\r
+ ------------------------------------\r
+\r
+2003.09\r
+\r
+Programmi, juhendi ja skeemi autor: Svjatoslav Agejenko\r
+E-post: svjatoslavagejenko@gmail.com\r
+kodulehekylg: www.hot.ee/n0/\r
+\r
+Ettevaatust: Siin tekstis olev info v6ib olla vananenud, vigane v6i\r
+ebat2ielik. Autor ei v6ta endale vastutust antud systeemi kasutamisest\r
+tekkinud otsese v6i kaudse kahju puhul!\r
+ \r
+\r
+\r
+ 0 Teemad\r
+ --------\r
+\r
+0 Teemad\r
+1 Yldinfo\r
+2 faili AASTA.AP formaat\r
+3 failide *.PP formaat\r
+4 Raudvara n6uded\r
+5 Tarkvara n6uded\r
+6 N6uded inimesele\r
+\r
+\r
+\r
+ 1 Yldinfo\r
+ ---------\r
+\r
+Programm Kooli Kell on m6eldud kella laskmiseks koolis, tundi sisse ja v2lja.\r
+Tundi sisse minev kell on 1 pikk ning 1 lyhem helin. V2ljaminev kell on 1\r
+tavaline pikk helin. Programm loeb aega arvuti systeemsest kellast.\r
+Fail 'AASTA.AP' hoiab aasta graafikut, kus saab m22rata teatud p2eva kohta\r
+k2iva p2evaplaani. P2evaplaanid asuvad failides '*.PP'.\r
+Aasta v6i p2evaplaani muutmiseks tuleb redigeerida vastavaid faile.\r
+Failides on info esitatud programmile 'Kooli Kell' arusaadavate k2skudena.\r
+Kus yhel real on yks k2sk, v6i tyhi rida.\r
+Rea esimene s6na peab olema k2sk, ning j2rgnevad s6nad on selle k2su\r
+parameetrid. S6nad v6ivad olla eraldatud suvalise 0 suuremate\r
+tabulaatorite ja/v6i tyhikute arvuga.\r
+Programmi saab kasutada arvutil millele on yhendatud spetsiaalne liides,\r
+v6i millel on see liides sisse monteeritud. Liideses olev relee toimib\r
+lylitina, mis kella laskmise ajaks sulgub. Liides vooluahelasse ise\r
+voolu ei anna. Seega on liides m6eldud kella ja toiteallikaga vooluahelasse\r
+jadamisi yhendamiseks. V6i siis olemasoleva mehaanilise\r
+kella laskmis nupuga paralleelselt, siis saab kella lasta nii endisest\r
+nupust kui ka arvutiga.\r
+\r
+Programm on etten2htud iseseisvalt t88tama, kuid on\r
+ka v6imalus erandkorras k2sitsi kella lasta, aega muuta jne.\r
+Selleks tuleb vajutada erinevaid klahve klaviatuuril.\r
+K2ivitudes kuvab programm klahvide kirjeldused ekraanile.\r
+\r
+\r
+\r
+ 2 faili AASTA.AP formaat\r
+ ------------------------\r
+\r
+L6pp 'AP' tuleneb s6nadest Aasta plaan.\r
+\r
+v <kuu>-<p2ev> <kuu>-<p2ev> <p2evaplaan>\r
+\r
+S6nast vahemik. Paneb paika p2evaplaani antud ajavahemikus. Esimene\r
+daatum peab kindlasti olema v2iksem kui teine. St. kui on t6esti vaja:\r
+\r
+v 10-4 2-1 eri\r
+\r
+tuleb kirjutada:\r
+\r
+v 10-4 12-31 eri\r
+v 1-1 2-1 eri\r
+\r
+P2evaplaan kehtib vahemiku esimesest p2evast kuni vahemiku viimase p2evani.\r
+\r
+n <kuu>-<p2ev> <kuu>-<p2ev> <n2dalap2ev> <p2evaplaan>\r
+\r
+S6nast n2dalap2ev. sama mis "v" kuid: paneb paika p2evaplaani antud\r
+ajavahemikus, antud n2dalap2eval. N2dalap2eva kirjeldatakse numbriga.\r
+n2dala esimene p2ev on esmasp2ev, talle vastab number 1.\r
+\r
+e <kuu>-<p�ev> <p�evaplaan>\r
+\r
+S6nast erip2evaplaan. Paneb paika antud kuup2evale antud p2evaplaani.\r
+Sobib h2sti erakorraliste, lyhendatud v6i uhekordselt kehtivate\r
+p2evaplaanide kehtestamiseks. N2iteks riigipyhad, spordip2ev jne.\r
+\r
+Kui teatud p2eva kohta ei k2inud yhtegi kirjet siis toimib vaikimisi "tuhi"\r
+p2evaplaan. Kui teatud p2eva kohta k2is mitu kirjet siis j22b peale viimane.\r
+\r
+\r
+\r
+ 3 failide *.PP formaat\r
+ ----------------------\r
+\r
+L6pp 'PP' tuleneb s6nadest P2eva Plaan.\r
+\r
+# <tund>:<minut> <kell>\r
+\r
+Laseb antud ajal antud kella. V6imalikud kella helinad on:\r
+\r
+ sis -kell tundi sisse\r
+ val -kell tunnist v2lja\r
+\r
+\r
+\r
+ 4 Raudvara n6uded\r
+ -----------------\r
+\r
+286 protsessoriga PC tyypi arvuti.\r
+ Peaks t88tama ka 8086 protsessoril aga pole testinud.\r
+\r
+640 KB p6him2lu.\r
+ V2hemaga pole testinud.\r
+\r
+500 KB vaba kettaruumi.\r
+ K6vakettalt t88 kiirendab oluliselt programmi k2ivitumist,\r
+ ja konfiguratsiooni redigeerimist.\r
+\r
+LPT port.\r
+\r
+Monitor.\r
+ v6ib ka mustvalge.\r
+\r
+Klaviatuur.\r
+\r
+\r
+\r
+ 5 Tarkvara n6uded\r
+ -----------------\r
+\r
+DOS 6.22\r
+ V6ib ka varasem, kuid pole testinud.\r
+QB 4.5\r
+ Piisab 'QB.EXE' failist. Peaks t88tama ka MS QBasic-us.\r
+EDIT.EXE\r
+ DOSi k2surealt k2ivituv teksti redaktor.\r
+\r
+\r
+\r
+ 6 N6uded inimesele\r
+ ------------------\r
+\r
+Systeemi kasutamiseks h2davajalik antud juhendist aru saamine. \r
+Systeemi paigaldamine n6uab elektriku oskusi.\r
+Programmi kasutamiseks on vajalik v2hemalt\r
+algaja tasemel arvutikasutaja oskus.\r
+\r
+\r
--- /dev/null
+DECLARE FUNCTION getnam$ (a%)\r
+DECLARE FUNCTION getsym$ (a$, b%)\r
+DECLARE SUB editor ()\r
+DECLARE SUB leiaconf ()\r
+DECLARE SUB clrerr ()\r
+DECLARE SUB dispt ()\r
+\r
+' Kooli Kell 3\r
+\r
+' (c) Svjatoslav Agejenko\r
+' All rights reserved.\r
+\r
+' E-mail: svjatoslavagejenko@gmail.com\r
+' Homepage: svjatoslav.eu\r
+\r
+DECLARE SUB dispp ()\r
+DECLARE SUB displukk ()\r
+DECLARE SUB kola (a%)\r
+DECLARE SUB rese ()\r
+DECLARE SUB start ()\r
+DECLARE SUB getnad (g%, n%, d%, k%)\r
+DECLARE SUB initp (b$)\r
+DECLARE SUB getmd (a$, m%, d%)\r
+DECLARE SUB son (a$)\r
+DECLARE SUB inita ()\r
+DECLARE SUB chm ()\r
+DECLARE SUB chd ()\r
+DECLARE SUB kell (a%)\r
+DECLARE SUB sync2 ()\r
+DECLARE SUB sync ()\r
+DECLARE SUB mnmain ()\r
+DECLARE SUB heli (a%)\r
+DECLARE SUB disp ()\r
+DEFINT A-Z\r
+\r
+DIM SHARED ap$(1 TO 500)\r
+DIM SHARED apl\r
+DIM SHARED pp$(1 TO 500)\r
+DIM SHARED ppl\r
+DIM SHARED prt, prt2\r
+DIM SHARED timo$\r
+DIM SHARED dato$\r
+DIM SHARED sona$(1 TO 50)\r
+DIM SHARED mitus\r
+DIM SHARED lp$\r
+DIM SHARED ndlp\r
+DIM SHARED pn$(1 TO 7)\r
+DIM SHARED lk$\r
+DIM SHARED ssave\r
+DIM SHARED ssavel\r
+DIM SHARED timero AS LONG\r
+DIM SHARED kblukk\r
+DIM SHARED tunnidara\r
+DIM SHARED errmsg$\r
+DIM SHARED cnflist$(1 TO 200)\r
+\r
+'ON ERROR GOTO 20\r
+\r
+start\r
+disp\r
+mnmain\r
+\r
+20\r
+LOCATE 20, 1\r
+COLOR 0, 15\r
+PRINT "Programmi t88s ilmus j2rgnev t6rge:"\r
+PRINT errmsg$\r
+PRINT "Programmi t2itmine katkestatud! Abi saamiseks lugege juhendit."\r
+SYSTEM\r
+\r
+SUB chd\r
+b$ = "tuhi"\r
+IF apl = 0 THEN inita\r
+\r
+a$ = DATE$\r
+n1 = VAL(RIGHT$(a$, 4))\r
+n2 = VAL(LEFT$(a$, 2))\r
+a$ = LEFT$(a$, 5)\r
+n3 = VAL(RIGHT$(a$, 2))\r
+getnad n1, n2, n3, ndlp\r
+FOR a = 1 TO apl\r
+son ap$(a)\r
+SELECT CASE sona$(1)\r
+CASE "v"\r
+getmd sona$(2), m1, d1\r
+getmd sona$(3), m2, d2\r
+getmd DATE$, m3, d3\r
+IF m3 < m1 THEN GOTO 9\r
+IF m3 > m2 THEN GOTO 9\r
+IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9\r
+IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9\r
+b$ = sona$(4)\r
+CASE "n"\r
+getmd sona$(2), m1, d1\r
+getmd sona$(3), m2, d2\r
+getmd DATE$, m3, d3\r
+IF m3 < m1 THEN GOTO 9\r
+IF m3 > m2 THEN GOTO 9\r
+IF m3 = m1 THEN IF d3 < d1 THEN GOTO 9\r
+IF m3 = m2 THEN IF d3 > d2 THEN GOTO 9\r
+IF ndlp <> VAL(sona$(4)) THEN GOTO 9\r
+b$ = sona$(5)\r
+CASE "e"\r
+getmd sona$(2), m1, d1\r
+getmd DATE$, m2, d2\r
+IF (m1 = m2) AND (d1 = d2) THEN b$ = sona$(3)\r
+END SELECT\r
+9\r
+NEXT a\r
+\r
+IF b$ <> lp$ THEN initp b$\r
+lp$ = b$\r
+tunnidara = 0\r
+dispp\r
+disp\r
+END SUB\r
+\r
+SUB chm\r
+a$ = DATE$\r
+IF a$ <> dato$ THEN chd\r
+dato$ = a$\r
+b = 0\r
+FOR a = 1 TO ppl\r
+son pp$(a)\r
+SELECT CASE sona$(1)\r
+CASE "#"\r
+getmd sona$(2), h1, m1\r
+getmd TIME$, h2, m2\r
+' PRINT h1, m1, h2, m2\r
+IF (h2 = h1) AND (m2 = m1) THEN\r
+IF sona$(3) = "sis" THEN b = 1\r
+IF sona$(3) = "val" THEN b = 2\r
+END IF\r
+END SELECT\r
+NEXT a\r
+\r
+IF (tunnidara = 0) AND (b > 0) THEN kell b\r
+ssave = ssave + 1\r
+END SUB\r
+\r
+SUB clrerr\r
+errmsg$ = "tundmatu viga. V6ibolla on v2he RAM m2lu?"\r
+END SUB\r
+\r
+SUB disp\r
+CLS\r
+PRINT "Kooli Kell 3 2003.09"\r
+PRINT "autor: Svjatoslav Agejenko "\r
+PRINT ""\r
+PRINT "s - kell tundi sisse v - kell tunnist v�lja"\r
+PRINT "a - sisesta uus aeg d - sisesta uus daatum"\r
+PRINT "p - n2itab dokumentatsiooni j - j�tab k�ik tunnid t�na �ra"\r
+PRINT "7 - 1 minut tagasi 8 - 1 minut edasi"\r
+PRINT "4 - 1 tund tagasi 5 - 1 tund edasi"\r
+PRINT "r - programmi restart q - programmist v�lja"\r
+PRINT "k - konfiguratsiooni redaktor CTRL+L - klaviatuuri lukk (sees/v2ljas)"\r
+\r
+dispp\r
+\r
+LOCATE 12, 15\r
+PRINT "Kuu-P�ev-Aasta (USA standard)"\r
+\r
+\r
+LOCATE 17\r
+\r
+FOR a = 1 TO ppl\r
+IF pp$(a) <> SPACE$(LEN(pp$(a))) THEN\r
+ PRINT pp$(a);\r
+ PRINT SPACE$(15 - LEN(pp$(a)));\r
+END IF\r
+NEXT a\r
+\r
+displukk\r
+dispt\r
+END SUB\r
+\r
+SUB displukk\r
+LOCATE 1, 40\r
+IF kblukk = 1 THEN\r
+ COLOR 0, 7\r
+ PRINT "Klaviatuur lukus! Vajuta CTRL+L"\r
+ COLOR 15, 0\r
+ELSE\r
+ PRINT " "\r
+END IF\r
+END SUB\r
+\r
+SUB dispp\r
+IF ndlp = 0 THEN GOTO 14\r
+LOCATE 14, 1\r
+PRINT "n�dalap�ev:", pn$(ndlp)\r
+LOCATE 15, 1\r
+PRINT "p�evaplaan:", lp$\r
+14\r
+END SUB\r
+\r
+SUB dispt\r
+LOCATE 16, 20\r
+COLOR 12 + 15, 0\r
+IF tunnidara = 1 THEN\r
+ PRINT "T2na on k6ik tunnid 2ra j2etud"\r
+ELSE\r
+ PRINT " "\r
+END IF\r
+COLOR 15, 0\r
+END SUB\r
+\r
+SUB editor\r
+23\r
+leiaconf\r
+CLS\r
+COLOR 0, 15\r
+LOCATE 1, 1\r
+PRINT SPACE$(80);\r
+LOCATE 1, 1\r
+PRINT "Konfiguratsiooni redaktor. Valige v2lja p2eva v6i aasta plaani."\r
+LOCATE 2, 1\r
+PRINT SPACE$(80);\r
+LOCATE 2, 1\r
+PRINT " nr nimi laiend suurus loomisdaatum"\r
+\r
+LOCATE 22, 1\r
+PRINT SPACE$(80);\r
+LOCATE 22, 1\r
+PRINT "K - valitud faili kustutamine U - uus fail ESC - redaktorist v2lja"\r
+p = 0\r
+v = 1\r
+17\r
+FOR a = 3 TO 21\r
+ IF a - 2 + p = v THEN\r
+ COLOR 0, 7\r
+ LOCATE a, 1\r
+ PRINT cnflist$(a - 2 + p) + SPACE$(55 - LEN(cnflist$(a - 2 + p)))\r
+ LOCATE a, 56\r
+ COLOR 31, 0\r
+ PRINT "<==";\r
+ IF cnflist$(a - 2 + p) <> SPACE$(LEN(cnflist$(a - 2 + p))) THEN\r
+ COLOR 15, 0\r
+ PRINT " valitud: " + getnam$(v)\r
+ END IF\r
+ COLOR 15, 0\r
+ ELSE\r
+ COLOR 15, 0\r
+ LOCATE a, 1\r
+ PRINT cnflist$(a - 2 + p) + SPACE$(80 - LEN(cnflist$(a - 2 + p)))\r
+ END IF\r
+NEXT a\r
+ \r
+\r
+a$ = INKEY$\r
+LOCATE 1, 1\r
+'IF a$ <> "" THEN PRINT ASC(RIGHT$(a$, 1)); ASC(LEFT$(a$, 1))\r
+IF a$ = CHR$(27) THEN GOTO 18\r
+IF a$ = "u" OR a$ = "U" THEN SHELL "EDIT": GOTO 23\r
+IF a$ = CHR$(0) + "P" THEN v = v + 1\r
+IF a$ = CHR$(0) + "H" THEN v = v - 1\r
+IF a$ = CHR$(0) + CHR$(73) THEN v = v - 17\r
+IF a$ = CHR$(0) + CHR$(81) THEN v = v + 17\r
+IF a$ = "K" OR a$ = "k" THEN\r
+ IF LEN(getnam$(v)) > 2 THEN\r
+ IF getnam$(v) = "AASTA.AP" THEN\r
+ SOUND 3000, .1\r
+ ELSE\r
+ KILL getnam$(v)\r
+ GOTO 23\r
+ END IF\r
+ ELSE\r
+ SOUND 3000, .1\r
+ END IF\r
+END IF\r
+IF a$ = CHR$(13) THEN\r
+ IF getnam$(v) = "." THEN\r
+ SOUND 3000, .1\r
+ ELSE\r
+ SHELL "EDIT " + getnam$(v)\r
+ GOTO 23\r
+ END IF\r
+END IF\r
+\r
+IF v < 1 THEN v = 1: SOUND 3000, .2\r
+IF v > 200 THEN v = 200: : SOUND 3000, .2\r
+\r
+21 IF v - p > 19 THEN p = p + 1: GOTO 21\r
+22 IF v - p < 1 THEN p = p - 1: GOTO 22\r
+\r
+GOTO 17\r
+18\r
+COLOR 15, 0\r
+disp\r
+END SUB\r
+\r
+SUB getmd (a$, m, d)\r
+b$ = LEFT$(a$, 5)\r
+m = VAL(LEFT$(b$, 2))\r
+d = VAL(RIGHT$(b$, 2))\r
+\r
+END SUB\r
+\r
+SUB getnad (g, n, d, k)\r
+'LOCATE 11, 1\r
+'PRINT g, n, d\r
+p = g\r
+m = n - 2\r
+IF n > 2 GOTO 120\r
+p = p - 1: m = m + 12\r
+120\r
+c = INT(p / 100)\r
+y = p - c * 100\r
+w = d + INT((13 * m - 1) / 5) + y + INT(y / 4) + INT(c / 4) - 2 * c\r
+k = w - 7 * INT(w / 7)\r
+IF k = 0 THEN k = 7\r
+END SUB\r
+\r
+FUNCTION getnam$ (a)\r
+c$ = ""\r
+FOR b = 8 TO 40\r
+ d$ = getsym(cnflist$(a), b)\r
+ IF d$ = " " THEN GOTO 19\r
+ c$ = c$ + d$\r
+NEXT b\r
+19\r
+getnam$ = c$ + "." + getsym(cnflist$(a), 17) + getsym(cnflist$(a), 18)\r
+END FUNCTION\r
+\r
+FUNCTION getsym$ (a$, b)\r
+getsym$ = RIGHT$(LEFT$(a$, b), 1)\r
+END FUNCTION\r
+\r
+SUB heli (a)\r
+'GOTO 10\r
+SELECT CASE a\r
+CASE 1\r
+FOR c = 1 TO 5\r
+SOUND 3000, 1\r
+SOUND 0, 1\r
+NEXT c\r
+\r
+CASE 2\r
+FOR c = 1 TO 5\r
+SOUND 2500, 1\r
+SOUND 0, 2\r
+NEXT c\r
+SOUND 2500, 10\r
+\r
+CASE 3\r
+FOR a = 1 TO 10\r
+SOUND 500, .5\r
+SOUND 1500, .5\r
+SOUND 2000, .5\r
+SOUND 1520, .5\r
+NEXT a\r
+\r
+\r
+CASE 4\r
+FOR a = 800 TO 1000 STEP 10\r
+SOUND a, .1\r
+SOUND a * 3, .1\r
+SOUND 0, 1\r
+NEXT a\r
+10\r
+\r
+END SELECT\r
+\r
+\r
+END SUB\r
+\r
+SUB inita\r
+apl = 0\r
+errmsg$ = "Ei leia aastaplaani faili! 'aasta.ap'"\r
+OPEN "aasta.ap" FOR INPUT AS #1\r
+clrerr\r
+5\r
+IF EOF(1) <> 0 THEN GOTO 3\r
+LINE INPUT #1, a$\r
+apl = apl + 1\r
+ap$(apl) = a$\r
+GOTO 5\r
+3\r
+CLOSE #1\r
+END SUB\r
+\r
+SUB initp (b$)\r
+ppl = 0\r
+errmsg$ = "Ei leia aastaplaanis mainitud '" + b$ + ".pp' p2evaplaani!"\r
+OPEN b$ + ".pp" FOR INPUT AS #1\r
+clrerr\r
+6\r
+IF EOF(1) <> 0 THEN GOTO 7\r
+LINE INPUT #1, a$\r
+ppl = ppl + 1\r
+pp$(ppl) = a$\r
+GOTO 6\r
+7\r
+CLOSE #1\r
+END SUB\r
+\r
+SUB kell (a)\r
+b$ = TIME$ + DATE$\r
+IF b$ <> lk$ THEN lk$ = b$ ELSE GOTO 2\r
+\r
+heli 3\r
+\r
+SELECT CASE a\r
+CASE 1\r
+kola 4\r
+FOR b = 1 TO 15\r
+SOUND 0, 1\r
+NEXT b\r
+kola 1\r
+CASE 2\r
+kola 5\r
+END SELECT\r
+2\r
+END SUB\r
+\r
+SUB kola (a)\r
+COLOR 15, 7\r
+s$ = ""\r
+FOR b = 1 TO 80\r
+ s$ = s$ + CHR$(219)\r
+NEXT b\r
+FOR b = 1 TO 30\r
+PRINT s$;\r
+NEXT b\r
+\r
+timero = TIMER\r
+11\r
+OUT prt, 255\r
+IF ABS(timero - TIMER) < a THEN GOTO 11\r
+OUT prt, 0\r
+COLOR 15, 0\r
+disp\r
+END SUB\r
+\r
+SUB leiaconf\r
+FOR a = 1 TO 200\r
+ cnflist$(a) = ""\r
+NEXT a\r
+c = 1\r
+\r
+SHELL "dir >dir.tmp"\r
+OPEN "dir.tmp" FOR INPUT AS #1\r
+15\r
+IF EOF(1) <> 0 THEN GOTO 16\r
+LINE INPUT #1, a$\r
+IF LEN(a$) < 30 THEN GOTO 15\r
+IF LEFT$(a$, 1) = " " THEN GOTO 15\r
+IF LEFT$(a$, 1) = "." THEN GOTO 15\r
+b$ = RIGHT$(LEFT$(a$, 12), 3)\r
+IF b$ = "PP " OR b$ = "AP " THEN ELSE GOTO 15\r
+d$ = " " + STR$(c)\r
+a$ = RIGHT$(d$, 4) + " " + a$\r
+IF LEN(a$) > 50 THEN a$ = LEFT$(a$, 50)\r
+cnflist$(c) = a$\r
+c = c + 1\r
+GOTO 15\r
+16\r
+CLOSE #1\r
+KILL "dir.tmp"\r
+END SUB\r
+\r
+SUB mnmain\r
+1\r
+b$ = LEFT$(TIME$, 5)\r
+IF b$ <> timo$ THEN chm\r
+timo$ = b$\r
+\r
+a$ = INKEY$\r
+\r
+IF a$ <> "" THEN\r
+IF ssave > ssavel THEN disp\r
+ssave = 0\r
+END IF\r
+\r
+IF a$ = CHR$(12) THEN\r
+ IF kblukk = 1 THEN kblukk = 0 ELSE kblukk = 1\r
+ displukk\r
+END IF\r
+IF kblukk = 1 THEN\r
+ IF a$ <> "" THEN SOUND 3000, 1\r
+ a$ = ""\r
+END IF\r
+IF a$ = "k" OR a$ = "K" THEN editor\r
+\r
+IF a$ = "s" OR a$ = "S" THEN kell 1\r
+IF a$ = "v" OR a$ = "V" THEN kell 2\r
+\r
+IF a$ = "a" THEN\r
+CLS\r
+PRINT " vana aeg: " + TIME$\r
+INPUT "sisesta uus aeg (TT:MM:SS): ", b$\r
+IF LEN(b$) <> 8 THEN GOTO 12\r
+TIME$ = b$\r
+timo$ = ""\r
+12\r
+disp\r
+END IF\r
+\r
+IF a$ = "d" OR a$ = "D" THEN\r
+CLS\r
+PRINT " vana daatum: " + DATE$\r
+INPUT "sisesta uus daatum (KK-PP-AAAA): ", b$\r
+IF LEN(b$) <> 10 THEN GOTO 13\r
+DATE$ = b$\r
+timo$ = ""\r
+13\r
+disp\r
+END IF\r
+\r
+IF a$ = "7" OR a$ = "8" THEN\r
+ b = VAL(RIGHT$(LEFT$(TIME$, 5), 2))\r
+ IF a$ = "7" THEN b = b - 1\r
+ IF a$ = "8" THEN b = b + 1\r
+ IF b < 0 THEN b = 0\r
+ IF b > 59 THEN b = 59\r
+ d$ = STR$(b)\r
+ IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1)\r
+ IF LEN(d$) < 2 THEN d$ = "0" + d$\r
+ e$ = LEFT$(TIME$, 3) + d$ + RIGHT$(TIME$, 3)\r
+ TIME$ = e$\r
+END IF\r
+\r
+IF a$ = "4" OR a$ = "5" THEN\r
+ b = VAL(LEFT$(TIME$, 2))\r
+ IF a$ = "4" THEN b = b - 1\r
+ IF a$ = "5" THEN b = b + 1\r
+ IF b < 0 THEN b = 0\r
+ IF b > 23 THEN b = 23\r
+ d$ = STR$(b)\r
+ IF LEFT$(d$, 1) = " " THEN d$ = RIGHT$(d$, LEN(d$) - 1)\r
+ IF LEN(d$) < 2 THEN d$ = "0" + d$\r
+ e$ = d$ + RIGHT$(TIME$, 6)\r
+ TIME$ = e$\r
+END IF\r
+\r
+IF a$ = "p" OR a$ = "P" THEN SHELL "EDIT juhend.txt": disp\r
+\r
+IF a$ = "r" OR a$ = "R" THEN rese\r
+IF a$ = "q" OR a$ = "Q" THEN SYSTEM\r
+\r
+IF a$ = "j" OR a$ = "J" THEN\r
+IF tunnidara = 0 THEN tunnidara = 1 ELSE tunnidara = 0\r
+dispt\r
+END IF\r
+\r
+IF ssave <= ssavel THEN\r
+ LOCATE 11, 1\r
+ PRINT TIME$\r
+ LOCATE 12, 1\r
+ PRINT DATE$\r
+ELSE\r
+ IF ABS(TIMER - timero) > 10 THEN\r
+ CLS\r
+ kblukk = 1\r
+ FOR b = 1 TO 20\r
+ LOCATE RND * 22 + 1, RND * 79 + 1\r
+ IF RND * 100 < 50 THEN PRINT "*" ELSE PRINT "."\r
+ NEXT b\r
+ LOCATE RND * 22 + 1, RND * 50 + 1\r
+ COLOR 0, 7\r
+ PRINT "< " + LEFT$(TIME$, 2);\r
+ COLOR 16, 7\r
+ PRINT ":";\r
+ COLOR 0, 7\r
+ PRINT RIGHT$(LEFT$(TIME$, 5), 2) + " >"\r
+ COLOR 15, 0\r
+ timero = TIMER\r
+ END IF\r
+END IF\r
+GOTO 1\r
+\r
+\r
+END SUB\r
+\r
+SUB rese\r
+heli 4\r
+timo$ = ""\r
+dato$ = ""\r
+apl = 0\r
+END SUB\r
+\r
+SUB son (a$)\r
+\r
+FOR b = 1 TO 50\r
+ sona$(b) = ""\r
+NEXT b\r
+mitus = 0\r
+\r
+b = 1\r
+FOR c = 1 TO LEN(a$)\r
+d$ = RIGHT$(LEFT$(a$, c), 1)\r
+IF d$ = " " OR d$ = CHR$(9) THEN\r
+b = 1\r
+ELSE\r
+IF b = 1 THEN b = 0: mitus = mitus + 1\r
+sona$(mitus) = sona$(mitus) + d$\r
+END IF\r
+NEXT c\r
+\r
+\r
+END SUB\r
+\r
+SUB start\r
+CLS\r
+COLOR 15\r
+pn$(1) = "esmasp�ev"\r
+pn$(2) = "teisip�ev"\r
+pn$(3) = "kolmap�ev"\r
+pn$(4) = "neljap�ev"\r
+pn$(5) = "reede"\r
+pn$(6) = "laup�ev"\r
+pn$(7) = "p�hap�ev"\r
+\r
+prt = &H378\r
+\r
+ssavel = 2\r
+kblukk = 1\r
+tunnidara = 0\r
+\r
+OUT prt, 0\r
+END SUB\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:00 val\r
+\r
+# 09:10 sis\r
+# 09:40 val\r
+\r
+# 09:50 sis\r
+# 10:20 val\r
+\r
+# 10:30 sis\r
+# 11:00 val\r
+\r
+# 11:30 sis\r
+# 12:00 val\r
+\r
+# 12:10 sis\r
+# 12:40 val\r
+\r
+# 12:50 sis\r
+# 13:20 val\r
+\r
+# 13:30 sis\r
+# 14:00 val\r
+\r
+# 14:05 sis\r
+# 14:35 val\r
+\r
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 11:05 val\r
+\r
+# 11:35 sis\r
+# 12:20 val\r
+\r
+# 12:30 sis\r
+# 13:15 val\r
+\r
+# 13:20 sis\r
+# 14:05 val\r
+\r
+# 14:10 sis\r
+# 14:55 val\r
+\r
+# 15:00 sis\r
+# 15:45 val\r
--- /dev/null
+# 08:30 sis\r
+# 09:15 val\r
+\r
+# 09:25 sis\r
+# 10:10 val\r
+\r
+# 10:20 sis\r
+# 11:05 val\r
+\r
+# 11:35 sis\r
+# 12:20 val\r
+\r
+# 12:30 sis\r
+# 13:15 val\r
+\r
+# 13:25 sis\r
+# 14:10 val\r
+\r
+# 14:20 sis\r
+# 15:05 val\r
+\r
+# 15:10 sis\r
+# 15:55 val\r
+\r
+# 16:00 sis\r
+# 16:45 val\r
+\r
+# 16:50 sis\r
+# 17:35 val
\ No newline at end of file
--- /dev/null
+fload data.ddb\r
+chklin 1 |> s 1\r
+|> c
\ No newline at end of file
--- /dev/null
+// 1 nimi\r
+// 2 perekonnanimi\r
+// 3 aadress\r
+// 4 telefon\r
+// 5 sugu M / N\r
+// 6 registreerumisnumber andmebaasis\r
+// 7 s\81nniaasta\r
+\r
+Micael |Apple |Piparmundi 57 |405 925 |M|0|1983\r
+Linda |Eik |Jaama 123-3 |12121 |N|1|1910\r
+Aleksandra |Strandbach |Kaotuse 3-7 |053 939 626 |N|2|1950\r
+Vladislav |Agejenko |Miina 1 |405 925 |M|3|1950\r
+Uku |Tsuikin | | |M|4|1860\r
+Mari |Elle | | |N|5|1870\r
+Greet |Eik |Aoe 10-33 |3123123 |N|6|1982\r
+Veera |Eik |Aooof 20-33 |3123223 |N|7|1951\r
+Elvi |Thompson |Kastani 12-11 |127836 |N|8|1949\r
+Arni |Eik |Uus 123-12 |123432 |M|9|1948\r
+Mihhail |Agejenko | | |M|10|1861
\ No newline at end of file
--- /dev/null
+' Dos Database\r
+' made by Svjatoslav Agejenko\r
+' in 2002\r
+' H-Page: svjatoslav.eu\r
+' E-Mail: svjatoslavagejenko@gmail.com\r
+ \r
+DECLARE SUB box (x1%, y1%, x2%, y2%)\r
+DECLARE SUB ssort (s%, m%)\r
+DECLARE SUB sort (s%, w%)\r
+REM $DYNAMIC\r
+DECLARE SUB cmp (a$, b$, r%)\r
+DECLARE SUB boss ()\r
+DECLARE SUB std (a$)\r
+DECLARE FUNCTION cnum$ (a%)\r
+DECLARE SUB fload (a$, b%, c%, d%)\r
+DECLARE SUB putfs (f%, l%, s%, c$)\r
+DECLARE SUB gets (l%, s%, a$)\r
+DECLARE SUB puts (l%, s%, a$)\r
+DECLARE SUB runf (a$)\r
+DECLARE SUB getfil (a%)\r
+DEFINT A-Y\r
+DECLARE SUB mkson (a$)\r
+DECLARE SUB title (a$)\r
+DECLARE SUB strip (a$, b$)\r
+DECLARE SUB cmd (a$)\r
+DECLARE SUB conkey (a$)\r
+DECLARE SUB conn (a$)\r
+DECLARE SUB ch ()\r
+DECLARE SUB chkey (a$)\r
+DECLARE SUB getkey (a$)\r
+DECLARE SUB conm (a$, c)\r
+DECLARE SUB start ()\r
+\r
+DIM SHARED con$(1 TO 50)\r
+DIM SHARED conc(1 TO 50)\r
+DIM SHARED concmd$\r
+DIM SHARED conx\r
+DIM SHARED sona$(1 TO 20)\r
+DIM SHARED mitus\r
+\r
+DIM SHARED buf$(1 TO 5000)\r
+DIM SHARED bufu(1 TO 5000)\r
+DIM SHARED bufl(1 TO 1000, 1 TO 30)\r
+DIM SHARED buflu(1 TO 1000)\r
+DIM SHARED lng\r
+DIM SHARED opf(1 TO 30)\r
+DIM SHARED hist$(1 TO 20)\r
+DIM SHARED histp, histk\r
+DIM SHARED buff(1 TO 30, 1 TO 1000)\r
+DIM SHARED stack(1 TO 2000, 1 TO 10)\r
+DIM SHARED stackl(1 TO 10)\r
+DIM SHARED stdl\r
+\r
+start\r
+\r
+1\r
+ch\r
+GOTO 1\r
+\r
+REM $STATIC\r
+SUB boss\r
+y1 = 0\r
+yp1 = 100\r
+y2 = 0\r
+yp2 = 100\r
+\r
+lx = 160\r
+ly = 100\r
+lxp = 1\r
+lyp = -1\r
+\r
+SCREEN 13\r
+\r
+GOSUB 18\r
+16\r
+a$ = INKEY$\r
+IF a$ = CHR$(0) + "H" THEN yp1 = yp1 - 25\r
+IF a$ = CHR$(0) + "P" THEN yp1 = yp1 + 25\r
+IF a$ = CHR$(27) THEN GOTO 17\r
+\r
+LINE (10, y1 - 35)-(20, y1 + 35), 0, B\r
+LINE (11, y1 - 34)-(19, y1 + 34), 15, B\r
+\r
+LINE (310, y2 - 35)-(300, y2 + 35), 0, B\r
+LINE (309, y2 - 34)-(301, y2 + 34), 15, B\r
+\r
+LINE (lx - 10, ly - 10)-(lx + 10, ly + 10), 0, B\r
+LINE (lx - 9, ly - 9)-(lx + 9, ly + 9), 15, B\r
+\r
+lx = lx + lxp\r
+ly = ly + lyp\r
+IF ly < 20 THEN lyp = 1\r
+IF ly > 180 THEN lyp = -1\r
+IF lx < 30 THEN\r
+lxp = 1\r
+IF ly < y1 - 35 OR ly > y1 + 35 THEN SOUND 1000, 1\r
+END IF\r
+IF lx > 290 THEN lxp = -1: GOSUB 18\r
+\r
+\r
+IF yp1 > 0 THEN y1 = y1 + 1: yp1 = yp1 - 1\r
+IF yp1 < 0 THEN y1 = y1 - 1: yp1 = yp1 + 1\r
+IF yp2 > 0 THEN y2 = y2 + 1: yp2 = yp2 - 1\r
+IF yp2 < 0 THEN y2 = y2 - 1: yp2 = yp2 + 1\r
+\r
+SOUND 0, .1\r
+GOTO 16\r
+18\r
+tlx = lx\r
+tly = ly\r
+tlyp = lyp\r
+tlxp = lxp\r
+\r
+\r
+19\r
+lx = lx + lxp\r
+ly = ly + lyp\r
+IF ly < 20 THEN lyp = 1\r
+IF ly > 180 THEN lyp = -1\r
+IF lx < 30 THEN lxp = 1\r
+IF lx > 290 THEN\r
+yp2 = ly - y2\r
+ELSE\r
+GOTO 19\r
+END IF\r
+\r
+SWAP lx, tlx\r
+SWAP ly, tly\r
+SWAP lyp, tlyp\r
+SWAP lxp, tlxp\r
+RETURN\r
+\r
+17\r
+SCREEN 0\r
+WIDTH 80, 50\r
+VIEW PRINT 1 TO 50\r
+END SUB\r
+\r
+SUB box (x1, y1, x2, y2)\r
+b$ = ""\r
+c$ = ""\r
+FOR a = x1 TO x2\r
+b$ = b$ + " "\r
+c$ = c$ + "-"\r
+NEXT a\r
+\r
+b$ = "|" + b$ + "|"\r
+c$ = "|" + c$ + "|"\r
+\r
+COLOR 14, 0\r
+LOCATE y1, x1\r
+PRINT c$\r
+LOCATE y2, x1\r
+PRINT c$\r
+FOR a = y1 + 1 TO y2 - 1\r
+LOCATE a, y1\r
+PRINT b$\r
+NEXT a\r
+\r
+\r
+END SUB\r
+\r
+SUB ch\r
+chkey a$\r
+IF a$ <> "" THEN conkey a$\r
+\r
+END SUB\r
+\r
+SUB chkey (a$)\r
+a$ = INKEY$\r
+IF a$ <> "" THEN\r
+IF a$ = CHR$(0) + "M" THEN a$ = "pa"\r
+IF a$ = CHR$(0) + "K" THEN a$ = "va"\r
+IF a$ = CHR$(0) + "H" THEN a$ = "ul"\r
+IF a$ = CHR$(0) + "P" THEN a$ = "al"\r
+\r
+\r
+END IF\r
+END SUB\r
+\r
+SUB cmd (a$)\r
+IF a$ = SPACE$(LEN(a$)) THEN GOTO 5\r
+conm a$, 14\r
+\r
+mkson a$\r
+IF mitus = 0 THEN GOTO 5\r
+\r
+SELECT CASE sona$(1)\r
+CASE "help"\r
+title "help"\r
+conm "help - for help", 7\r
+conm "quit - quit program", 7\r
+conm "b - boss screen", 7\r
+conm "memstat- show info about memory blocks", 7\r
+conm "memput <addr> <data> - put data to specified memoy block", 7\r
+conm "memlist <addr> <amount> - show memory blocks, starting from <addr>", 7\r
+conm "runf <file.ext> - run script file", 7\r
+conm "lnstat - show info about memory lines", 7\r
+conm "lnput <line> <word> <data> <data> ... put data in <line> starting from <word>", 7\r
+conm "lnlist <addr> <amount> - show contenc of memory lines", 7\r
+conm "fstat - show info about memory files", 7\r
+conm "fput <file> <line> <word> <data> <data> ... put data in memory file", 7\r
+conm "fload <filename.ext> <file> <line> <word>- load data file into memory file", 7\r
+conm "cls - clear screen", 7\r
+conm "stclear <stack> - clear stack", 7\r
+conm "chklin <page> <from line> <to line> - determine used line numbers to STDOUT", 7\r
+conm "stacksize <stack> - determine stack size to STDOUT", 7\r
+conm "filtand <stack> <word> <mask> <word> <mask> ... filters out lines to STDOUT", 7\r
+conm "filtor <stack> <word> <mask> <word> <mask> ... filters out lines to STDOUT", 7\r
+conm "disp <stack> <word> <word> ... display formatted selected cells to STDOUT", 7\r
+conm "sort <stack> <word> - sort elements by <word> value, lower first", 7\r
+conm "swap <stack> - swap stack elements (backwards)", 7\r
+conm "ssort <stack> <word> - sort stack in alphabetical order", 7\r
+conm "memget <pointer> - allocates memory block, and puts there -", 7\r
+conm "liststack <stack> <from line> <to line> - show stack values to STDOUT", 7\r
+conm "ask <question> <file> <line> <word> - asks question, and stores result", 7\r
+conm "flnget <file> <pointer> - get unused line in file", 7\r
+GOTO 5\r
+\r
+CASE "quit"\r
+SYSTEM\r
+\r
+CASE "memstat"\r
+title "memory blocks summary"\r
+c = 0\r
+lng = 0\r
+FOR b = 1 TO 5000\r
+IF bufu(b) > 0 THEN c = c + 1\r
+lng = lng + LEN(buf$(b))\r
+NEXT b\r
+d$ = "memory blocks used:" + STR$(c) + " total 5000"\r
+conm d$, 7\r
+d$ = "data size:" + STR$(lng)\r
+conm d$, 7\r
+GOTO 5\r
+\r
+CASE "memput"\r
+b = VAL(sona$(2))\r
+strip sona$(3), c$\r
+IF c$ = "" THEN\r
+bufu(b) = 0\r
+buf$(b) = ""\r
+ELSE\r
+bufu(b) = 1\r
+buf$(b) = sona$(3)\r
+END IF\r
+GOTO 5\r
+\r
+CASE "memlist"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+IF b = 0 THEN b = 1\r
+IF c = 0 THEN c = 1\r
+\r
+FOR d = b TO 5000\r
+IF c = 0 THEN GOTO 5\r
+IF bufu(d) > 0 THEN\r
+e$ = cnum(d) + ":" + SPACE$(5 - LEN(cnum(d)))\r
+e$ = e$ + buf$(d)\r
+conm e$, 7\r
+c = c - 1\r
+END IF\r
+NEXT d\r
+GOTO 5\r
+\r
+CASE "runf"\r
+runf sona$(2)\r
+GOTO 5\r
+\r
+CASE "lnstat"\r
+title "memory lines summary"\r
+c = 0\r
+d = 0\r
+FOR b = 1 TO 1000\r
+IF buflu(b) > 0 THEN c = c + 1: d = d + buflu(b)\r
+NEXT b\r
+d$ = "memory lines used:" + STR$(c) + " total 1000"\r
+conm d$, 7\r
+d$ = "total number of words in lines:" + STR$(d)\r
+conm d$, 7\r
+GOTO 5\r
+\r
+CASE "lnput"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+e = mitus\r
+IF e < 4 THEN e = 4\r
+FOR d = 4 TO e\r
+puts b, c + d - 4, sona$(d)\r
+NEXT d\r
+GOTO 5\r
+\r
+CASE "lnlist"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+\r
+FOR d = b TO 1000\r
+IF c = 0 THEN GOTO 5\r
+IF buflu(d) > 0 THEN\r
+e$ = cnum(d) + ":"\r
+e$ = e$ + SPACE$(5 - LEN(e$))\r
+e$ = e$ + cnum(buflu(d))\r
+e$ = e$ + SPACE$(8 - LEN(e$))\r
+\r
+FOR g = 1 TO 10\r
+gets d, g, f$\r
+e$ = e$ + " >" + f$\r
+NEXT g\r
+conm e$, 7\r
+c = c - 1\r
+END IF\r
+NEXT d\r
+GOTO 5\r
+\r
+CASE "fstat"\r
+title "Memory files summary"\r
+FOR b = 1 TO 30\r
+ e = 0\r
+ FOR c = 1 TO 1000\r
+ IF buff(b, c) > -1 THEN\r
+ IF e = 0 THEN\r
+ d$ = "File number:" + STR$(b)\r
+ conm d$, 7\r
+ e = e + 1\r
+ END IF\r
+ d$ = "on line:" + STR$(c) + " allocated memory line: " + STR$(buff(b, c))\r
+ conm d$, 7\r
+ END IF\r
+ NEXT c\r
+NEXT b\r
+GOTO 5\r
+\r
+CASE "fput"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+d = VAL(sona$(4))\r
+f = mitus\r
+IF f < 5 THEN f = 5\r
+FOR e = 5 TO f\r
+putfs b, c, d + e - 5, sona$(e)\r
+NEXT e\r
+GOTO 5\r
+\r
+CASE "cls"\r
+FOR b = 1 TO 50\r
+conm " ", 7\r
+NEXT b\r
+GOTO 5\r
+\r
+CASE "fload"\r
+b = VAL(sona$(3))\r
+c = VAL(sona$(4))\r
+d = VAL(sona$(5))\r
+IF b = 0 THEN b = 1\r
+IF c = 0 THEN c = 1\r
+IF d = 0 THEN d = 1\r
+fload sona$(2), b, c, d\r
+GOTO 5\r
+\r
+CASE "stclear"\r
+b = VAL(sona$(2))\r
+IF b = 0 THEN b = 1\r
+stackl(b) = 0\r
+GOTO 5\r
+\r
+CASE "chklin"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+d = VAL(sona$(4))\r
+IF b = 0 THEN b = 1\r
+IF c = 0 THEN c = 1\r
+IF d = 0 THEN d = 1000\r
+\r
+FOR e = c TO d\r
+IF buff(b, e) > 0 THEN std cnum(buff(b, e))\r
+NEXT e\r
+GOTO 5\r
+\r
+CASE "stacksize"\r
+b = VAL(sona$(2))\r
+IF b = 0 THEN b = 1\r
+std cnum(stackl(b))\r
+GOTO 5\r
+\r
+CASE "b"\r
+boss\r
+conm "returning", 7\r
+GOTO 5\r
+\r
+CASE "filtor"\r
+b = VAL(sona$(2))\r
+FOR e = 1 TO stackl(b)\r
+FOR c = 3 TO mitus STEP 2\r
+gets stack(e, b), VAL(sona$(c)), f$\r
+cmp f$, sona$(c + 1), d\r
+IF d = 1 THEN\r
+std cnum(stack(e, b))\r
+GOTO 20\r
+END IF\r
+NEXT c\r
+20\r
+NEXT e\r
+GOTO 5\r
+\r
+CASE "disp"\r
+b = VAL(sona$(2))\r
+DIM tmp1(1 TO 100)\r
+DIM tmp2(1 TO 100)\r
+\r
+FOR d = 1 TO 100\r
+tmp2(d) = 0\r
+NEXT d\r
+d = 0\r
+\r
+FOR e = 3 TO mitus\r
+d = d + 1\r
+tmp1(d) = VAL(sona$(e))\r
+NEXT e\r
+\r
+FOR c = 1 TO stackl(b)\r
+FOR e = 1 TO d\r
+gets stack(c, b), tmp1(e), f$\r
+IF tmp2(e) < LEN(f$) THEN tmp2(e) = LEN(f$)\r
+NEXT e\r
+NEXT c\r
+\r
+FOR c = 1 TO stackl(b)\r
+g$ = ""\r
+FOR e = 1 TO d\r
+gets stack(c, b), tmp1(e), f$\r
+f$ = f$ + SPACE$(tmp2(e) - LEN(f$))\r
+g$ = g$ + f$ + " # "\r
+NEXT e\r
+conm g$, 10\r
+NEXT c\r
+\r
+ERASE tmp2\r
+ERASE tmp1\r
+GOTO 5\r
+\r
+CASE "filtand"\r
+b = VAL(sona$(2))\r
+FOR e = 1 TO stackl(b)\r
+FOR c = 3 TO mitus STEP 2\r
+gets stack(e, b), VAL(sona$(c)), f$\r
+cmp f$, sona$(c + 1), d\r
+IF d = 0 THEN GOTO 21\r
+NEXT c\r
+std cnum(stack(e, b))\r
+21\r
+NEXT e\r
+GOTO 5\r
+\r
+CASE "sort"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+sort b, c\r
+GOTO 5\r
+\r
+CASE "swap"\r
+b = VAL(sona$(2))\r
+c = stackl(b)\r
+FOR d = 1 TO c / 2\r
+SWAP stack(d, b), stack(c - d + 1, b)\r
+NEXT d\r
+GOTO 5\r
+\r
+CASE "ssort"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+IF b = 0 THEN b = 1\r
+IF c = 0 THEN c = 1\r
+ssort b, c\r
+GOTO 5\r
+\r
+CASE "memget"\r
+b = VAL(sona$(2))\r
+IF b = 0 THEN b = 1\r
+FOR c = 1 TO 5000\r
+IF bufu(c) = 0 THEN bufu(c) = 1: buf$(c) = "-": stack(b, 10) = c: GOTO 23\r
+NEXT c\r
+23\r
+IF stackl(10) < b THEN stackl(10) = b\r
+GOTO 5\r
+\r
+CASE "liststack"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+d = VAL(sona$(4))\r
+IF b = 0 THEN b = 1\r
+IF c = 0 THEN c = 1\r
+IF d = 0 THEN d = stackl(b)\r
+FOR e = c TO d\r
+std cnum(stack(e, b))\r
+NEXT e\r
+GOTO 5\r
+\r
+CASE "ask"\r
+b$ = sona$(2)\r
+IF b$ = "" THEN b$ = "input"\r
+c = VAL(sona$(3))\r
+d = VAL(sona$(4))\r
+e = VAL(sona$(5))\r
+box 5, 5, 75, 11\r
+LOCATE 7, 7\r
+PRINT b$\r
+LOCATE 9, 7\r
+INPUT "", f$\r
+putfs c, d, e, f$\r
+conm "'" + f$ + "' accepted", 7\r
+GOTO 5\r
+\r
+CASE "flnget"\r
+b = VAL(sona$(2))\r
+c = VAL(sona$(3))\r
+FOR d = 1 TO 1000\r
+IF buff(b, d) = -1 THEN\r
+stack(c, 10) = d\r
+IF stackl(10) < c THEN stackl(10) = c\r
+GOTO 24\r
+END IF\r
+NEXT d\r
+24\r
+GOTO 5\r
+\r
+END SELECT\r
+\r
+\r
+\r
+conm "Invalid command", 12\r
+5\r
+END SUB\r
+\r
+SUB cmp (a$, b$, r)\r
+IF a$ = b$ THEN r = 1 ELSE r = 0\r
+END SUB\r
+\r
+FUNCTION cnum$ (a)\r
+b$ = STR$(a)\r
+cnum$ = RIGHT$(b$, LEN(b$) - 1)\r
+END FUNCTION\r
+\r
+SUB conkey (a$)\r
+b$ = concmd$ + SPACE$(85)\r
+b$ = LEFT$(b$, 80)\r
+\r
+IF a$ = "va" THEN conx = conx - 1\r
+IF a$ = "pa" THEN conx = conx + 1\r
+IF a$ = "ul" THEN\r
+b$ = hist$(histk)\r
+histk = histk - 1\r
+IF histk < 1 THEN histk = 20\r
+END IF\r
+IF a$ = "al" THEN\r
+b$ = hist$(histk)\r
+histk = histk + 1\r
+IF histk > 20 THEN histk = 1\r
+END IF\r
+\r
+\r
+\r
+IF LEN(a$) = 1 THEN\r
+IF a$ = CHR$(13) THEN\r
+strip b$, c$\r
+histp = histp + 1\r
+IF histp > 20 THEN histp = 1\r
+histk = histp\r
+hist$(histp) = c$\r
+cmd c$\r
+b$ = ""\r
+conx = 1\r
+GOTO 4\r
+END IF\r
+\r
+IF a$ = CHR$(8) THEN\r
+IF conx > 1 THEN\r
+b$ = LEFT$(b$, conx - 2) + RIGHT$(b$, 81 - conx)\r
+conx = conx - 1\r
+END IF\r
+GOTO 4\r
+END IF\r
+\r
+b$ = LEFT$(b$, conx - 1) + a$ + RIGHT$(b$, 81 - conx)\r
+conx = conx + 1\r
+END IF\r
+4\r
+\r
+\r
+IF conx < 1 THEN conx = 1\r
+IF conx > 80 THEN conx = 80\r
+\r
+b$ = b$ + SPACE$(85)\r
+concmd$ = LEFT$(b$, 80)\r
+LOCATE 50, 1\r
+COLOR 15, 1\r
+PRINT concmd$;\r
+LOCATE 50, conx\r
+COLOR 0, 14\r
+PRINT RIGHT$(LEFT$(concmd$, conx), 1);\r
+\r
+\r
+END SUB\r
+\r
+SUB conm (d$, c)\r
+a$ = d$\r
+\r
+14\r
+IF LEN(a$) > 78 THEN\r
+b$ = LEFT$(a$, 78)\r
+conm b$, c\r
+a$ = " >> " + RIGHT$(a$, LEN(a$) - 78)\r
+GOTO 14\r
+END IF\r
+\r
+\r
+b$ = a$ + SPACE$(80 - LEN(a$))\r
+con$(50) = b$\r
+conc(50) = c\r
+\r
+FOR a = 1 TO 49\r
+con$(a) = con$(a + 1)\r
+conc(a) = conc(a + 1)\r
+NEXT a\r
+\r
+FOR a = 1 TO 49\r
+LOCATE a, 1\r
+COLOR conc(a), 0\r
+PRINT con$(a)\r
+NEXT a\r
+\r
+END SUB\r
+\r
+SUB fload (a$, b, c, d)\r
+getfil h\r
+\r
+j = c\r
+l = 0\r
+\r
+OPEN a$ FOR INPUT AS #h\r
+12\r
+IF EOF(h) <> 0 THEN GOTO 13\r
+LINE INPUT #h, e$\r
+\r
+IF LEFT$(e$, 3) = "// " THEN\r
+conm e$, 10\r
+GOTO 12\r
+END IF\r
+IF e$ = SPACE$(LEN(e$)) THEN GOTO 12\r
+\r
+e$ = e$ + "|"\r
+l = l + 1\r
+h$ = ""\r
+i = d\r
+FOR f = 1 TO LEN(e$)\r
+g$ = RIGHT$(LEFT$(e$, f), 1)\r
+IF g$ = "|" THEN\r
+ putfs b, j, i, h$\r
+ h$ = ""\r
+ g$ = ""\r
+ i = i + 1\r
+END IF\r
+IF g$ = CHR$(9) THEN g$ = ""\r
+h$ = h$ + g$\r
+NEXT f\r
+\r
+j = j + 1\r
+GOTO 12\r
+13\r
+CLOSE #h\r
+\r
+\r
+opf(h) = 0\r
+\r
+k$ = "file: " + a$ + " loaded." + STR$(l) + " lines in file"\r
+conm k$, 7\r
+END SUB\r
+\r
+SUB getfil (a)\r
+FOR b = 1 TO 30\r
+IF opf(b) = 0 THEN opf(b) = 1: a = b: GOTO 7\r
+NEXT b\r
+7\r
+END SUB\r
+\r
+SUB gets (l, s, a$)\r
+\r
+b = bufl(l, s)\r
+\r
+IF b = -1 THEN\r
+a$ = ""\r
+ELSE\r
+a$ = buf$(b)\r
+END IF\r
+END SUB\r
+\r
+SUB mkson (a$)\r
+\r
+mitus = 0\r
+\r
+d = 1\r
+FOR b = 1 TO LEN(a$)\r
+c$ = RIGHT$(LEFT$(a$, b), 1)\r
+IF c$ = " " THEN\r
+d = 1\r
+ELSE\r
+IF d = 1 THEN\r
+mitus = mitus + 1\r
+sona$(mitus) = ""\r
+d = 0\r
+END IF\r
+sona$(mitus) = sona$(mitus) + c$\r
+END IF\r
+NEXT b\r
+\r
+'conm "sonad_______", 10\r
+'FOR b = 1 TO mitus\r
+'conm sona$(b), 14\r
+'NEXT b\r
+\r
+FOR a = 1 TO mitus\r
+IF LEFT$(sona$(a), 2) = "|>" THEN\r
+IF sona$(a + 1) = "c" THEN stdl = 1\r
+IF sona$(a + 1) = "s" THEN stdl = 10 + VAL(sona$(a + 2))\r
+mitus = a - 1\r
+GOTO 15\r
+END IF\r
+IF LEFT$(sona$(a), 2) = "|@" THEN\r
+sona$(a) = cnum(stack(VAL(RIGHT$(sona$(a), LEN(sona$(a)) - 2)), 10))\r
+END IF\r
+NEXT a\r
+\r
+15\r
+FOR a = mitus + 1 TO 20\r
+sona$(a) = ""\r
+NEXT a\r
+END SUB\r
+\r
+SUB putfs (f, l, s, c$)\r
+\r
+'DIM SHARED buff(1 TO 30, 1 TO 1000)\r
+\r
+la = buff(f, l)\r
+\r
+IF la = -1 THEN\r
+FOR a = 1 TO 1000\r
+IF buflu(a) = 0 THEN la = a: GOTO 10\r
+NEXT a\r
+10\r
+END IF\r
+\r
+puts la, s, c$\r
+IF buflu(la) = 0 THEN buff(f, l) = -1 ELSE buff(f, l) = la\r
+END SUB\r
+\r
+SUB puts (l, s, a$)\r
+'PRINT l, s\r
+IF a$ = "|" THEN a$ = ""\r
+IF a$ = "||" THEN GOTO 11\r
+'conm a$, 13\r
+b = bufl(l, s)\r
+\r
+IF b = -1 THEN\r
+'DIM SHARED buf$(1 TO 10000)\r
+'DIM SHARED bufu(1 TO 10000)\r
+FOR c = 1 TO 10000\r
+IF bufu(c) = 0 THEN GOTO 6\r
+NEXT c\r
+6\r
+b = c\r
+bufu(b) = 1\r
+buflu(l) = buflu(l) + 1\r
+END IF\r
+\r
+strip a$, c$\r
+\r
+IF c$ = "" THEN\r
+bufu(b) = 0\r
+buf$(b) = ""\r
+bufl(l, s) = -1\r
+buflu(l) = buflu(l) - 1\r
+ELSE\r
+buf$(b) = c$\r
+bufl(l, s) = b\r
+END IF\r
+11\r
+END SUB\r
+\r
+SUB runf (a$)\r
+getfil h\r
+\r
+OPEN a$ FOR INPUT AS #h\r
+9\r
+IF EOF(h) <> 0 THEN GOTO 8\r
+LINE INPUT #h, b$\r
+cmd b$\r
+GOTO 9\r
+8\r
+CLOSE #h\r
+\r
+opf(h) = 0\r
+END SUB\r
+\r
+SUB sort (s, w)\r
+DIM tmp1(1 TO 10000)\r
+DIM tmp2(1 TO 10000)\r
+\r
+b = stackl(s)\r
+\r
+FOR a = 1 TO b\r
+gets stack(a, s), w, c$\r
+tmp1(a) = VAL(c$)\r
+tmp2(a) = a\r
+NEXT a\r
+\r
+d = 1\r
+FOR a = 1 TO b\r
+e = 32000\r
+\r
+FOR c = d TO b\r
+IF tmp1(c) < e THEN e = tmp1(c): f = c\r
+NEXT c\r
+\r
+SWAP tmp1(a), tmp1(f)\r
+SWAP tmp2(a), tmp2(f)\r
+d = d + 1\r
+NEXT a\r
+\r
+FOR a = 1 TO b\r
+stack(a, s) = tmp2(a)\r
+NEXT a\r
+\r
+END SUB\r
+\r
+SUB ssort (s, m)\r
+DIM tbti(1 TO 2000)\r
+DIM tbtp(1 TO 2000)\r
+DIM tbt$(1 TO 2000)\r
+\r
+FOR a = 1 TO stackl(s)\r
+gets stack(a, s), m, b$\r
+tbt$(a) = b$\r
+tbtp(a) = a\r
+NEXT a\r
+\r
+b = stackl(s)\r
+FOR a = 1 TO stackl(s)\r
+d$ = tbt$(1)\r
+e = 1\r
+f = ASC(LEFT$(d$, 1))\r
+FOR c = 2 TO b\r
+IF ASC(LEFT$(tbt$(c), 1)) = f THEN\r
+IF d$ <> tbt$(c) THEN\r
+g$ = d$ + CHR$(0)\r
+h$ = tbt$(c) + CHR$(0)\r
+i = LEN(g$)\r
+IF LEN(h$) > i THEN i = LEN(h$)\r
+FOR j = 1 TO i\r
+k = ASC(RIGHT$(LEFT$(g$, j), 1))\r
+l = ASC(RIGHT$(LEFT$(h$, j), 1))\r
+IF k < l THEN GOTO 22\r
+IF l < k THEN e = c: d$ = tbt$(c): f = ASC(LEFT$(d$, 1)): GOTO 22\r
+NEXT j\r
+END IF\r
+END IF\r
+IF ASC(LEFT$(tbt$(c), 1)) < f THEN f = ASC(LEFT$(tbt$(c), 1)): e = c: d$ = tbt$(c)\r
+22\r
+NEXT c\r
+\r
+tbti(a) = tbtp(e)\r
+tbt$(e) = tbt$(b)\r
+tbtp(e) = tbtp(b)\r
+b = b - 1\r
+NEXT a\r
+\r
+FOR a = 1 TO stackl(s)\r
+stack(a, s) = tbti(a)\r
+NEXT a\r
+\r
+conm "done", 7\r
+END SUB\r
+\r
+SUB start\r
+WIDTH 80, 50\r
+VIEW PRINT 1 TO 50\r
+CLS\r
+conx = 1\r
+histp = 1\r
+histk = 1\r
+stdl = 1\r
+\r
+conm "DDBASE, (Dos Data BASE) 0.0", 7\r
+conm "Copyright Svjatoslav Agejenko. All Rights Reserved.", 7\r
+conm "starting...", 7\r
+FOR a = 1 TO 5000\r
+bufu(a) = 0\r
+buf$(a) = ""\r
+NEXT a\r
+\r
+FOR a = 1 TO 30\r
+FOR b = 1 TO 1000\r
+bufl(b, a) = -1\r
+buff(a, b) = -1\r
+NEXT b\r
+opf(a) = 0\r
+NEXT a\r
+\r
+FOR a = 1 TO 1000\r
+buflu(a) = 0\r
+NEXT a\r
+\r
+FOR a = 1 TO 10\r
+stackl(a) = 0\r
+NEXT a\r
+\r
+\r
+a$ = "runf auto.scr"\r
+FOR b = 1 TO LEN(a$)\r
+c$ = RIGHT$(LEFT$(a$, b), 1)\r
+conkey c$\r
+NEXT b\r
+conkey CHR$(13)\r
+\r
+END SUB\r
+\r
+SUB std (a$)\r
+'conm a$, 2\r
+\r
+SELECT CASE stdl\r
+CASE 1\r
+conm a$, 10\r
+CASE 11 TO 20\r
+b = stdl - 10\r
+stackl(b) = stackl(b) + 1\r
+stack(stackl(b), b) = VAL(a$)\r
+\r
+c$ = a$ + " > " + cnum(stackl(b)) + " ! " + cnum(b)\r
+END SELECT\r
+\r
+\r
+\r
+\r
+END SUB\r
+\r
+SUB strip (a$, b$)\r
+b$ = a$\r
+2\r
+IF LEFT$(b$, 1) = " " THEN b$ = RIGHT$(b$, LEN(b$) - 1): GOTO 2\r
+3\r
+IF RIGHT$(b$, 1) = " " THEN b$ = LEFT$(b$, LEN(b$) - 1): GOTO 3\r
+END SUB\r
+\r
+SUB title (a$)\r
+conm " ", 10\r
+conm "================> " + a$ + " <===============", 7\r
+\r
+\r
+\r
+END SUB\r
+\r
--- /dev/null
+flnget 1 1\r
+ask Eesnimi 1 |@1 1\r
+ask Perekonnanimi 1 |@1 2\r
+ask Aadress 1 |@1 3\r
+ask Telefon 1 |@1 4\r
+ask Sugu_M_voi_N 1 |@1 5\r
+ask S\81nniaasta 1 |@1 7\r
+stclear 1\r
+chklin 1 |> s 1\r
+stacksize 1 |> c\r
+\r
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta
+ http-equiv="Content-Type"
+ content="text/html; charset=UTF-8">
+<title>QBasicApps</title>
+</head>
+<body>
+ <h1>QBasicApps - collection of applications mostly written in MS QBasic for DOS environment</h1>
+ <a href="http://php.svjatoslav.eu/gitweb/?p=QBasicApps.git;a=snapshot;h=HEAD;sf=tgz">Download</a>
+
+ <a href="http://svjatoslav.eu/static/gitbrowse/QBasicApps/doc/index.html">Online homepage</a>
+
+ <a href="http://svjatoslav.eu/programs.jsp">Other applications hosted on svjatoslav.eu</a>
+ <pre>
+<b>Programs author:</b>
+ Svjatoslav Agejenko
+ Homepage: <a href="http://svjatoslav.eu">http://svjatoslav.eu</a>
+ Email: <a href="mailto:svjatoslav@svjatoslav.eu">svjatoslav@svjatoslav.eu</a>
+
+This software is distributed under <a href="http://www.gnu.org/licenses/gpl-2.0.html">GNU GENERAL PUBLIC LICENSE Version 2</a>.
+
+
+This collection contains lots of applications (games, graphics tests (2D/3D/4D)
+algorithms tests, utilities) I wrote long time ago.
+Mostly in QBasic, some in x86 assembly for use under DOS environment.
+
+
+Few sample applications from the package:
+ <a href="../games/checkers/index.html">Checkers game</a>
+ <a href="../games/mario/index.html">Super Mario clone</a>
+ <a href="../graphics/3D/3dSynthezier/doc/index.html">3D synthezer</a>
+ <a href="../graphics/3D/ray casting engine/index.html">Ray casting 3D engine</a>
+ <a href="../graphics/4D engine/index.html">4D engine</a>
+ <a href="../math/3D graph/index.html">Interactive 3D graph for visualizing formulas</a>
+ <a href="../math/biorythm/index.html">Biorythm calculator</a>
+ <a href="../networking/digital data over analog audio channel/index.html">Digital data over analog audio channel</a>
+ <a href="../simulation/explosion/index.html">Explosion simulation</a>
+ <a href="../simulation/life/index.html">Game of life</a>
+
+
+</pre>
+</body>
+</html>
--- /dev/null
+' Checkers game (unfinished)\r
+' by Svjatoslav Agejenko 2001\r
+' svjatoslavagejenko@gmail.com\r
+\r
+\r
+DECLARE SUB compki (m%, h%, x1%, y1%)\r
+DECLARE SUB compgo2 (h%)\r
+DECLARE SUB compgo (h%)\r
+DECLARE SUB humngo (h%)\r
+DEFINT A-Z\r
+\r
+DECLARE SUB thinkc ()\r
+DECLARE SUB thinkh ()\r
+DECLARE SUB cmd (a$)\r
+DECLARE SUB freet ()\r
+DECLARE SUB prn (x%, y%, c%, a$)\r
+DECLARE SUB msg (a$, c)\r
+DECLARE SUB getfnt ()\r
+DECLARE SUB playg ()\r
+DECLARE SUB geth ()\r
+DECLARE SUB start ()\r
+DECLARE SUB mklau ()\r
+DECLARE SUB showr (x, y)\r
+DECLARE SUB show ()\r
+DIM SHARED font(0 TO 7, 0 TO 7, 0 TO 255)\r
+DIM SHARED siz, fi, ri, rs\r
+DIM SHARED stri$\r
+DIM SHARED humx1, humy1, humx2, humy2\r
+DIM SHARED sug, smax\r
+DIM SHARED npos AS LONG\r
+DIM SHARED cx1, cy1, cx2, cy2\r
+\r
+siz = 6 ' Board size\r
+fi = 0\r
+ri = 2\r
+smax = 3 ' thinking depth\r
+\r
+\r
+DIM SHARED lau(-1 TO siz + 2, -1 TO siz + 2)\r
+\r
+start\r
+mklau\r
+show\r
+playg\r
+\r
+SUB cmd (a$)\r
+\r
+mitus = 0\r
+DIM sona$(1 TO 10)\r
+FOR b = 1 TO 10\r
+sona$(b) = ""\r
+NEXT b\r
+\r
+d = 1\r
+e = 1\r
+FOR b = 1 TO LEN(a$)\r
+c$ = RIGHT$(LEFT$(a$, b), 1)\r
+IF c$ = " " THEN\r
+IF e = 0 THEN d = d + 1: e = 1\r
+GOTO 4\r
+END IF\r
+e = 0\r
+sona$(d) = sona$(d) + c$\r
+4\r
+NEXT b\r
+IF e = 1 THEN d = d - 1\r
+mitus = d\r
+\r
+\r
+SELECT CASE sona$(1)\r
+CASE "m"\r
+IF humx1 > 0 THEN msg "move replaced", 14\r
+\r
+humx1 = ASC(LEFT$(sona$(2), 1)) - 64\r
+IF humx1 > 32 THEN humx1 = humx1 - 32\r
+humy1 = VAL(RIGHT$(sona$(2), LEN(sona$(2)) - 1))\r
+humx2 = ASC(LEFT$(sona$(3), 1)) - 64\r
+IF humx2 > 32 THEN humx2 = humx2 - 32\r
+humy2 = VAL(RIGHT$(sona$(3), LEN(sona$(2)) - 1))\r
+\r
+CASE "h"\r
+msg "h - display help screen", 14\r
+msg "q - to quit", 14\r
+msg "m <from> <to> - make move", 14\r
+msg "n - no. positions processed", 14\r
+\r
+CASE "q"\r
+SYSTEM\r
+\r
+CASE "n"\r
+b$ = "positions processed:" + STR$(npos)\r
+msg b$, 14\r
+\r
+END SELECT\r
+\r
+END SUB\r
+\r
+SUB compgo (h)\r
+IF sug > smax THEN h = 0: GOTO 6\r
+sug = sug + 1\r
+npos = npos + 1\r
+freet\r
+IF sug = 1 THEN h1 = -2000 ELSE h1 = -1000\r
+\r
+'cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1\r
+b = 0\r
+c = 0\r
+m = 0\r
+FOR y = 1 TO siz ' check for eating\r
+FOR x = 1 TO siz\r
+IF lau(x, y) = 1 THEN\r
+8\r
+IF (lau(x - 1, y + 1) = 2) AND (lau(x - 2, y + 2) = 0) THEN\r
+SWAP lau(x, y), lau(x - 2, y + 2)\r
+lau(x - 1, y + 1) = 0\r
+compki m1, h2, x - 2, y + 2\r
+lau(x - 1, y + 1) = 2\r
+SWAP lau(x, y), lau(x - 2, y + 2)\r
+m1 = m1 + 1\r
+IF m1 > m THEN m = m1: h1 = -1000\r
+IF m1 = m THEN\r
+IF h2 + 1 > h1 THEN\r
+h1 = h2 + 1\r
+IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y + 2\r
+END IF\r
+END IF\r
+b = 1\r
+END IF\r
+\r
+\r
+IF (lau(x + 1, y + 1) = 2) AND (lau(x + 2, y + 2) = 0) THEN\r
+SWAP lau(x, y), lau(x + 2, y + 2)\r
+lau(x + 1, y + 1) = 0\r
+compki m1, h2, x + 2, y + 2\r
+lau(x + 1, y + 1) = 2\r
+SWAP lau(x, y), lau(x + 2, y + 2)\r
+m1 = m1 + 1\r
+IF m1 > m THEN m = m1: h1 = -1000\r
+IF m1 = m THEN\r
+IF h2 + 1 > h1 THEN\r
+h1 = h2 + 1\r
+IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y + 2\r
+END IF\r
+END IF\r
+b = 1\r
+END IF\r
+\r
+\r
+IF (lau(x - 1, y - 1) = 2) AND (lau(x - 2, y - 2) = 0) THEN\r
+SWAP lau(x, y), lau(x - 2, y - 2)\r
+lau(x - 1, y - 1) = 0\r
+compki m1, h2, x - 2, y - 2\r
+lau(x - 1, y - 1) = 2\r
+SWAP lau(x, y), lau(x - 2, y - 2)\r
+m1 = m1 + 1\r
+IF m1 > m THEN m = m1: h1 = -1000\r
+IF m1 = m THEN\r
+IF h2 + 1 > h1 THEN\r
+h1 = h2 + 1\r
+IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x - 2: cy2 = y - 2\r
+END IF\r
+END IF\r
+b = 1\r
+END IF\r
+\r
+\r
+IF (lau(x + 1, y - 1) = 2) AND (lau(x + 2, y - 2) = 0) THEN\r
+SWAP lau(x, y), lau(x + 2, y - 2)\r
+lau(x + 1, y - 1) = 0\r
+compki m1, h2, x + 2, y - 2\r
+lau(x + 1, y - 1) = 2\r
+SWAP lau(x, y), lau(x + 2, y - 2)\r
+m1 = m1 + 1\r
+IF m1 > m THEN m = m1: h1 = -1000\r
+IF m1 = m THEN\r
+IF h2 + 1 > h1 THEN\r
+h1 = h2 + 1\r
+IF npos = 1 THEN cx1 = x: cy1 = y: cx2 = x + 2: cy2 = y - 2\r
+END IF\r
+END IF\r
+b = 1\r
+END IF\r
+\r
+\r
+\r
+\r
+\r
+IF c = 1 THEN GOTO 9\r
+END IF\r
+NEXT x\r
+NEXT y\r
+\r
+9\r
+IF (b = 1) AND (npos = 1) THEN\r
+cx3 = (cx1 + cx2) / 2\r
+cy3 = (cy1 + cy2) / 2\r
+lau(cx3, cy3) = 0\r
+showr cx3, cy3\r
+\r
+SWAP lau(cx1, cy1), lau(cx2, cy2)\r
+showr cx1, cy1\r
+showr cx2, cy2\r
+msg "NJAM!", 10\r
+x = cx2\r
+y = cy2\r
+c = 1\r
+b = 0\r
+GOTO 8\r
+END IF\r
+IF c = 1 THEN\r
+cx1 = 1: cy1 = 1: cx2 = 1: cy2 = 1\r
+GOTO 10\r
+END IF\r
+\r
+IF sug = 1 THEN\r
+msg "l��a ei saa", 4\r
+msg STR$(h1), 4\r
+END IF\r
+\r
+FOR y = 1 TO siz ' unuseful move\r
+FOR x = 1 TO siz\r
+IF lau(x, y) = 1 THEN\r
+IF lau(x - 1, y + 1) = 0 THEN\r
+SWAP lau(x, y), lau(x - 1, y + 1)\r
+humngo h2\r
+SWAP lau(x, y), lau(x - 1, y + 1)\r
+IF h2 > h1 THEN\r
+h1 = h2\r
+IF sug = 1 THEN cx1 = x: cy1 = y: cx2 = x - 1: cy2 = y + 1\r
+END IF\r
+END IF\r
+\r
+IF lau(x + 1, y + 1) = 0 THEN\r
+SWAP lau(x, y), lau(x + 1, y + 1)\r
+humngo h2\r
+SWAP lau(x, y), lau(x + 1, y + 1)\r
+IF h2 > h1 THEN\r
+h1 = h2\r
+IF sug = 1 THEN cx1 = x: cy1 = y: cx2 = x + 1: cy2 = y + 1\r
+END IF\r
+END IF\r
+\r
+END IF\r
+NEXT x\r
+NEXT y\r
+h = h1\r
+10\r
+sug = sug - 1\r
+6\r
+END SUB\r
+\r
+SUB compki (m, h, x1, y1)\r
+h1 = 0\r
+\r
+FOR y = 1 TO siz\r
+FOR x = 1 TO siz\r
+NEXT x\r
+NEXT y\r
+h = h1\r
+\r
+END SUB\r
+\r
+SUB freet\r
+a$ = INKEY$\r
+IF a$ = "" THEN\r
+ELSE\r
+IF a$ = CHR$(8) THEN\r
+IF LEN(stri$) > 0 THEN\r
+stri$ = LEFT$(stri$, LEN(stri$) - 1): GOTO 3\r
+END IF\r
+END IF\r
+IF a$ = CHR$(13) THEN\r
+IF LEN(stri$) > 0 THEN\r
+msg stri$, 7\r
+cmd stri$\r
+stri$ = ""\r
+END IF\r
+GOTO 3\r
+END IF\r
+stri$ = stri$ + a$\r
+3\r
+LINE (400, 468)-(639, 479), 1, BF\r
+prn 405, 469, 14, stri$\r
+END IF\r
+END SUB\r
+\r
+SUB getfnt\r
+SCREEN 13\r
+FOR a = 0 TO 255\r
+IF (a > 5) AND (a < 17) THEN GOTO 2\r
+LOCATE 1, 1\r
+PRINT CHR$(a)\r
+2\r
+FOR y = 0 TO 7\r
+FOR x = 0 TO 7\r
+font(x, y, a) = POINT(x, y)\r
+NEXT x\r
+NEXT y\r
+NEXT a\r
+\r
+END SUB\r
+\r
+SUB humngo (h)\r
+npos = npos + 1\r
+h1 = 1000\r
+\r
+FOR y = siz TO 1 STEP -1\r
+FOR x = siz TO 1 STEP -1\r
+IF lau(x, y) = 2 THEN\r
+IF lau(x - 1, y - 1) = 0 THEN\r
+SWAP lau(x, y), lau(x - 1, y - 1)\r
+compgo h2\r
+SWAP lau(x, y), lau(x - 1, y - 1)\r
+IF h2 < h1 THEN h1 = h2\r
+END IF\r
+\r
+IF lau(x + 1, y - 1) = 0 THEN\r
+SWAP lau(x, y), lau(x + 1, y - 1)\r
+compgo h2\r
+SWAP lau(x, y), lau(x + 1, y - 1)\r
+IF h2 < h1 THEN h1 = h2\r
+END IF\r
+\r
+\r
+IF (lau(x - 1, y - 1) = 1) AND (lau(x - 2, y - 2) = 0) THEN\r
+SWAP lau(x, y), lau(x - 2, y - 2)\r
+lau(x - 1, y - 1) = 0\r
+humngo h2\r
+lau(x - 1, y - 1) = 1\r
+SWAP lau(x, y), lau(x - 2, y - 2)\r
+IF h2 - 1 < h1 THEN h1 = h2 - 1\r
+END IF\r
+\r
+IF (lau(x + 1, y - 1) = 1) AND (lau(x + 2, y - 2) = 0) THEN\r
+SWAP lau(x, y), lau(x + 2, y - 2)\r
+lau(x + 1, y - 1) = 0\r
+humngo h2\r
+lau(x + 1, y - 1) = 1\r
+SWAP lau(x, y), lau(x + 2, y - 2)\r
+IF h2 - 1 < h1 THEN h1 = h2 - 1\r
+END IF\r
+\r
+\r
+\r
+\r
+END IF\r
+NEXT x\r
+NEXT y\r
+h = h1\r
+END SUB\r
+\r
+SUB mklau\r
+FOR y = -1 TO siz + 2\r
+FOR x = -1 TO siz + 2\r
+lau(x, y) = -1\r
+NEXT x\r
+NEXT y\r
+\r
+FOR y = 1 TO siz\r
+FOR x = 1 TO siz\r
+lau(x, y) = 0\r
+NEXT x\r
+NEXT y\r
+\r
+FOR y = 1 TO ri\r
+FOR x = 1 TO siz\r
+IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN\r
+lau(x, y) = 1\r
+END IF\r
+NEXT x\r
+NEXT y\r
+\r
+FOR y = siz - ri + 1 TO siz\r
+FOR x = 1 TO siz\r
+IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN\r
+lau(x, y) = 2\r
+END IF\r
+NEXT x\r
+NEXT y\r
+\r
+END SUB\r
+\r
+SUB msg (a$, c)\r
+DIM buf(1 TO 10000)\r
+FOR x = 400 TO 630 STEP 40\r
+GET (x, 8)-(x + 39, 467), buf(1)\r
+PUT (x, 0), buf(1), PSET\r
+NEXT x\r
+LINE (400, 460)-(639, 467), 0, BF\r
+prn 405, 460, c, a$\r
+END SUB\r
+\r
+SUB playg\r
+'GOTO 7\r
+1\r
+thinkc\r
+show\r
+7\r
+thinkh\r
+show\r
+GOTO 1\r
+\r
+\r
+END SUB\r
+\r
+SUB prn (x, y, c, a$)\r
+x1 = x\r
+y1 = y\r
+FOR a = 1 TO LEN(a$)\r
+b = ASC(RIGHT$(LEFT$(a$, a), 1))\r
+FOR y2 = 0 TO 7\r
+FOR x2 = 0 TO 7\r
+IF font(x2, y2, b) > 0 THEN PSET (x2 + x1, y2 + y1), c\r
+NEXT x2\r
+NEXT y2\r
+x1 = x1 + 8\r
+NEXT a\r
+END SUB\r
+\r
+SUB show\r
+FOR y = 1 TO siz\r
+FOR x = 1 TO siz\r
+showr x, y\r
+NEXT x\r
+NEXT y\r
+\r
+sp = rs / 2\r
+FOR x = 1 TO siz\r
+prn ((x - 1) * rs + 12 + sp), 2, 10, CHR$(64 + x)\r
+prn ((x - 1) * rs + 12 + sp), siz * rs + 11, 10, CHR$(64 + x)\r
+NEXT x\r
+\r
+FOR y = 1 TO siz\r
+a$ = STR$(y)\r
+a$ = RIGHT$(a$, LEN(a$) - 1)\r
+prn 15 - (LEN(a$) * 8), (y - 1) * rs + sp + 7, 10, a$\r
+prn (siz * rs + 16), (y - 1) * rs + sp + 7, 10, a$\r
+NEXT y\r
+\r
+\r
+END SUB\r
+\r
+SUB showr (x, y)\r
+IF (x + y + fi) / 2 = INT((x + y + fi) / 2) THEN c = 8 ELSE c = 7\r
+x1 = (x - 1) * rs + 15\r
+y1 = (y - 1) * rs + 10\r
+LINE (x1, y1)-(x1 + rs - 1, y1 + rs - 1), c, BF\r
+IF lau(x, y) > 0 THEN\r
+sp = rs / 2\r
+IF lau(x, y) = 1 THEN c1 = 15 ELSE c1 = 14\r
+CIRCLE (x1 + sp, y1 + sp), sp - 1, c1\r
+PAINT (x1 + sp, y1 + sp), c1\r
+END IF\r
+END SUB\r
+\r
+SUB start\r
+getfnt\r
+SCREEN 12\r
+LINE (399, 0)-(399, 479), 13\r
+msg "type 'h' for help", 14\r
+\r
+rs = INT(370 / siz)\r
+\r
+\r
+END SUB\r
+\r
+SUB thinkc\r
+msg "computer turn", 14\r
+sug = 0\r
+npos = 0\r
+cx1 = -1\r
+\r
+compgo h\r
+cmd "n"\r
+IF cx1 = -1 THEN msg "you won!", 10: msg "--------", 10: SYSTEM\r
+\r
+IF h <= -2 THEN msg "oh no...", 10\r
+IF h = -1 THEN msg "oops!", 10\r
+IF h = 1 THEN msg "yess! I will eat soon!", 10\r
+IF h >= 2 THEN msg "HA HA HA YOU ARE IN TROUBLE!", 10\r
+\r
+\r
+IF ABS(cx1 - cx2) = 2 THEN\r
+cx3 = (cx1 + cx2) / 2\r
+cy3 = (cy1 + cy2) / 2\r
+lau(cx3, cy3) = 0\r
+showr cx3, cy3\r
+END IF\r
+\r
+SWAP lau(cx1, cy1), lau(cx2, cy2)\r
+showr cx1, cy1\r
+showr cx2, cy2\r
+\r
+END SUB\r
+\r
+SUB thinkh\r
+msg "your turn", 14\r
+5\r
+freet\r
+IF humx1 = 0 THEN GOTO 5\r
+SWAP lau(humx2, humy2), lau(humx1, humy1)\r
+showr humx1, humy1\r
+showr humx2, humy2\r
+IF ABS(humx1 - humx2) = 2 THEN\r
+cx3 = (humx1 + humx2) / 2\r
+cy3 = (humy1 + humy2) / 2\r
+lau(cx3, cy3) = 0\r
+showr cx3, cy3\r
+END IF\r
+\r
+humx1 = 0\r
+END SUB\r
+\r
--- /dev/null
+<HTML>\r
+<HEAD><TITLE>checkers</TITLE></HEAD>\r
+\r
+<BODY text=#A0A0ff vLink=#0000ff aLink=#0000ff link=#0000ff bgColor=#000000>\r
+\r
+<CENTER><H1>checkers</H1></CENTER>\r
+<BR>\r
+<BR>\r
+Play checkers against the computer with any board\r
+size and any amount of caps. Does thinking by recursively\r
+testing many possible scenarios with any depth.\r
+\r
+Since it is slow QBasic implementation,\r
+it isn't practical to play with many caps\r
+or big thinking depth, for reasonable responce time.\r
+\r
+<BR><IMG SRC="sshot.png">\r
+</BODY>\r
+</HTML>
\ No newline at end of file
--- /dev/null
+' This program is created by Svjatoslav Agejenko\r
+' in 1998\r
+\r
+' USE w a z s keys to move around\r
+' and ENTER key to celect chess and put to other place\r
+\r
+DECLARE SUB look ()\r
+DECLARE SUB motleb ()\r
+DECLARE SUB mang ()\r
+DECLARE SUB sisend ()\r
+DECLARE SUB asend ()\r
+DEFINT A-Z\r
+DIM SHARED nu(-100 TO 300) AS INTEGER\r
+DIM SHARED kaik AS INTEGER\r
+DIM SHARED looma AS INTEGER\r
+DIM SHARED hiir(1000)\r
+DIM SHARED ax1, ax2\r
+SCREEN 2\r
+CLS\r
+LINE (1, 1)-(10, 1)\r
+LINE (1, 1)-(1, 5)\r
+LINE (10, 1)-(6, 2)\r
+LINE (6, 2)-(10, 4)\r
+LINE (10, 4)-(8, 5)\r
+LINE (8, 5)-(4, 3)\r
+LINE (4, 3)-(1, 5)\r
+PAINT (2, 2), 1\r
+GET (1, 1)-(10, 5), hiir\r
+CLS\r
+FOR a = 0 TO 10\r
+LINE ((a * 40) + 20, 10)-((a * 40) + 20, 189), 1\r
+NEXT a\r
+\r
+FOR a = 0 TO 20\r
+LINE (20, (a * 18) + 9)-(420, (a * 18) + 9), 1\r
+NEXT a\r
+\r
+FOR a = 1 TO 200\r
+nu(a) = 4\r
+NEXT a\r
+\r
+FOR a = 2 TO 10 STEP 2\r
+FOR b = 1 TO 10 STEP 2\r
+PAINT ((b * 40) + 5, (a * 18) + 5)\r
+NEXT b\r
+NEXT a\r
+\r
+FOR a = 1 TO 10 STEP 2\r
+FOR b = 2 TO 10 STEP 2\r
+PAINT ((b * 40) + 5, (a * 18) + 5)\r
+NEXT b\r
+NEXT a\r
+\r
+FOR a = 2 TO 4 STEP 2\r
+FOR b = 1 TO 10 STEP 2\r
+nu(((a - 1) * 20) + b) = 1\r
+NEXT b\r
+NEXT a\r
+\r
+FOR a = 1 TO 4 STEP 2\r
+FOR b = 2 TO 10 STEP 2\r
+nu(((a - 1) * 20) + b) = 1\r
+NEXT b\r
+NEXT a\r
+\r
+FOR a = 8 TO 10 STEP 2\r
+FOR b = 1 TO 10 STEP 2\r
+nu(((a - 1) * 20) + b) = 0\r
+NEXT b\r
+NEXT a\r
+\r
+FOR a = 7 TO 10 STEP 2\r
+FOR b = 2 TO 10 STEP 2\r
+nu(((a - 1) * 20) + b) = 0\r
+NEXT b\r
+NEXT a\r
+\r
+FOR b = 2 TO 10 STEP 2\r
+nu(80 + b) = 3\r
+NEXT b\r
+\r
+FOR b = 1 TO 10 STEP 2\r
+nu(100 + b) = 3\r
+NEXT b\r
+\r
+asend\r
+kaik = 1\r
+mang\r
+\r
+SUB asend\r
+FOR b = 1 TO 10\r
+FOR a = 1 TO 10\r
+v = nu(((b - 1) * 20) + a)\r
+SELECT CASE v\r
+CASE 1\r
+CIRCLE (a * 40, b * 18), 17, 1\r
+PAINT (a * 40, b * 18), 1\r
+CIRCLE (a * 40, b * 18), 17, 0\r
+CIRCLE (a * 40, b * 18), 16, 0\r
+LINE ((a * 40) - 16, b * 18)-((a * 40) + 16, b * 18), 0\r
+CASE 0\r
+CIRCLE (a * 40, b * 18), 17, 0\r
+PAINT (a * 40, b * 18), 0\r
+CIRCLE (a * 40, b * 18), 17, 1\r
+CIRCLE (a * 40, b * 18), 15, 1\r
+CIRCLE (a * 40, b * 18), 3, 1\r
+CIRCLE (a * 40, b * 18), 7, 1\r
+LINE ((a * 40) - 16, b * 18)-((a * 40) + 16, b * 18), 0\r
+CASE 3\r
+PAINT (a * 40, b * 18), 1\r
+END SELECT\r
+NEXT a\r
+NEXT b\r
+END SUB\r
+\r
+SUB look\r
+looma = 0\r
+FOR a = 1 TO 200\r
+IF nu(a) = 0 AND nu(a - 21) = 1 AND nu(a - 42) = 3 THEN looma = 1\r
+IF nu(a) = 0 AND nu(a - 19) = 1 AND nu(a - 38) = 3 THEN looma = 1\r
+IF nu(a) = 0 AND nu(a + 21) = 1 AND nu(a + 42) = 3 THEN looma = 1\r
+IF nu(a) = 0 AND nu(a + 19) = 1 AND nu(a + 38) = 3 THEN looma = 1\r
+NEXT a\r
+END SUB\r
+\r
+SUB mang\r
+4\r
+sisend\r
+motleb\r
+look\r
+IF looma = 1 THEN SOUND 1234, 2\r
+GOTO 4\r
+END SUB\r
+\r
+SUB motleb\r
+3\r
+REM T O P E L T L O O K\r
+FOR a = 1 TO 200\r
+IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 61) = 0 AND nu(a + 80) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 23) = 0 AND nu(a + 4) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 59) = 0 AND nu(a + 80) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 17) = 0 AND nu(a - 4) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 AND nu(a + 63) = 0 AND nu(a + 84) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 AND nu(a + 57) = 0 AND nu(a + 76) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: aiki = 1: asend: GOTO 3\r
+\r
+IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 61) = 0 AND nu(a - 80) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 23) = 0 AND nu(a - 4) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 59) = 0 AND nu(a - 80) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 17) = 0 AND nu(a + 4) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 AND nu(a - 63) = 0 AND nu(a - 84) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: kaik = 1: asend: GOTO 3\r
+IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 AND nu(a - 57) = 0 AND nu(a - 76) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: aiki = 1: asend: GOTO 3\r
+NEXT a\r
+\r
+REM L I H T S A L T L O O K\r
+FOR a = 1 TO 200\r
+IF nu(a) = 1 AND nu(a + 21) = 0 AND nu(a + 42) = 3 THEN nu(a) = 3: nu(a + 21) = 3: nu(a + 42) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 19) = 0 AND nu(a + 38) = 3 THEN nu(a) = 3: nu(a + 19) = 3: nu(a + 38) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a - 21) = 0 AND nu(a - 42) = 3 THEN nu(a) = 3: nu(a - 21) = 3: nu(a - 42) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a - 19) = 0 AND nu(a - 38) = 3 THEN nu(a) = 3: nu(a - 19) = 3: nu(a - 38) = 1: GOTO 2\r
+NEXT a\r
+REM K A I T S E B\r
+FOR a = 1 TO 200\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 0 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 21) = 0 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+\r
+IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 1 AND nu(a + 40) = 1 AND nu(a + 38) = 3 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 3 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a - 2) = 1 AND nu(a + 19) = 3 AND nu(a) = 1 AND nu(a + 40) = 1 AND nu(a + 38) = 1 AND nu(a + 61) = 0 THEN nu(a - 2) = 3: nu(a + 19) = 1: GOTO 2\r
+NEXT a\r
+REM L A H E B N U R K A\r
+FOR a = 1 TO 200\r
+IF nu(a) = 1 AND nu(a + 2) = 4 AND nu(a + 21) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a - 2) = 4 AND nu(a + 19) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+NEXT a\r
+REM O H U T U K A I K\r
+FOR a = 1 TO 200\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 3 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 3 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
+\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 1 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 1 AND nu(a + 40) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
+\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 3 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 3 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
+\r
+IF nu(a) = 1 AND nu(a + 19) = 3 AND nu(a + 38) = 1 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 21) = 3 AND nu(a + 42) = 1 AND nu(a + 40) = 1 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
+NEXT a\r
+REM M O T T E T U K A I K\r
+FOR a = 1 TO 200\r
+IF nu(a) = 1 AND nu(a + 21) = 3 THEN nu(a) = 3: nu(a + 21) = 1: GOTO 2\r
+IF nu(a) = 1 AND nu(a + 19) = 3 THEN nu(a) = 3: nu(a + 19) = 1: GOTO 2\r
+NEXT a\r
+LOCATE 4, 5\r
+PRINT " S I N U V O I T"\r
+END\r
+GOTO 3\r
+2\r
+asend\r
+9\r
+END SUB\r
+\r
+SUB sisend\r
+DIM asdf(1000)\r
+\r
+p = 1\r
+5\r
+a = ax1\r
+b = ax2\r
+7\r
+IF p = 1 THEN LOCATE 1, 70: PRINT "Kust !"\r
+IF p = 2 THEN LOCATE 1, 70: PRINT "kuhu !"\r
+\r
+LOCATE 2, 60\r
+qw = (((b \ 18) - 1) * 20) + (a \ 40)\r
+PRINT qw\r
+GET (a, b)-(a + 10, b + 10), asdf\r
+PUT (a, b), hiir, PSET\r
+a$ = INPUT$(1)\r
+PUT (a, b), asdf, PSET\r
+IF p = 2 AND a$ = CHR$(13) THEN a2 = qw: ax1 = a: ax2 = b: GOTO 8\r
+IF p = 1 AND a$ = CHR$(13) THEN a1 = qw: p = 2\r
+IF a$ = "q" THEN END\r
+IF a$ = "s" THEN a = a + 40\r
+IF a$ = "a" THEN a = a - 40\r
+IF a$ = "w" THEN b = b - 18\r
+IF a$ = "z" THEN b = b + 18\r
+IF a < 1 THEN a = 1\r
+IF b < 1 THEN b = 1\r
+\r
+GOTO 7\r
+8\r
+kaik = 1\r
+LOCATE 3, 60\r
+PRINT a1; "-"; a2\r
+10\r
+REM K O N T R O L L\r
+IF a1 = a2 + 19 AND nu(a1) = 0 AND nu(a2) = 3 THEN BEEP: SWAP nu(a1), nu(a2)\r
+IF a1 = a2 + 21 AND nu(a1) = 0 AND nu(a2) = 3 THEN BEEP: SWAP nu(a1), nu(a2)\r
+zxcv = 0\r
+IF a1 = a2 + 42 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 + 21) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 + 21) = 3: zxcv = 1\r
+IF a1 = a2 + 38 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 + 19) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 + 19) = 3: zxcv = 1\r
+IF a1 = a2 - 42 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 - 21) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 - 21) = 3: zxcv = 1\r
+IF a1 = a2 - 38 AND nu(a1) = 0 AND nu(a2) = 3 AND nu(a2 - 19) = 1 THEN BEEP: SWAP nu(a1), nu(a2): nu(a2 - 19) = 3: zxcv = 1\r
+asend\r
+IF zxcv = 1 THEN look: IF looma = 1 THEN SOUND 1234, 1: p = 2: a1 = a2: GOTO 5\r
+6\r
+END SUB\r
+\r
--- /dev/null
+ 10 \r
+((]]]]]]((\r
+(]]]]]]]](\r
+]]]]((]]]]\r
+]]]((((]]]\r
+]]]((((]]]\r
+]]]((((]]]\r
+]]]((((]]]\r
+]]]]((]]]]\r
+(]]]]]]]](\r
+((]]]]]]((\r
--- /dev/null
+ 10 \r
+((((]]](((\r
+(((]]]]]((\r
+(((]]]]]((\r
+(((]]]]]((\r
+(((]]]]]((\r
+(((]]]]]((\r
+(((]]]]]((\r
+(((]]]]]((\r
+(((]]]]]((\r
+((((]]](((\r
--- /dev/null
+ 10 \r
+(]]]]]]]((\r
+]]]]]]]]](\r
+]]]]((]]]]\r
+(]](((]]]]\r
+((((]]]]](\r
+(((]]]]]((\r
+(]]]](((((\r
+]]]](((]](\r
+]]]]]]]]]]\r
+(]]]]]]]](\r
--- /dev/null
+ 10 \r
+(]]]]]]]](\r
+]]]]]]]]]]\r
+(]](((]]]]\r
+(((((((]]]\r
+(((((]]]](\r
+(((((]]]](\r
+(((((((]]]\r
+(]](((]]]]\r
+]]]]]]]]]]\r
+(]]]]]]]](\r
--- /dev/null
+ 10 \r
+(((]](((](\r
+((]]](((]]\r
+((]]]((]]]\r
+(]]](((]]]\r
+(]]]((]]]]\r
+]]]]]]]]]]\r
+(]]]]]]]]]\r
+(((((]]]](\r
+(((((]]]](\r
+((((]]]]((\r
--- /dev/null
+ 10 \r
+((]]]]]]((\r
+(]]]]]](((\r
+(]](((((((\r
+(]](((((((\r
+(]]]]]]]](\r
+((]]]]]]]]\r
+(((((((]]]\r
+]]](((]]]]\r
+]]]]]]]]](\r
+(]]]]]]]((\r
--- /dev/null
+ 10 \r
+((]]]]]]((\r
+]]]]]]]]](\r
+]]](((]]](\r
+]]](((((((\r
+]]]]]]]]](\r
+]]]]]]]]]]\r
+]]]((((]]]\r
+]]](((]]]]\r
+]]]]]]]]](\r
+(]]]]]]]((\r
--- /dev/null
+ 10 \r
+(]]]]]]]](\r
+]]]]]]]]]]\r
+]]]((((]]]\r
+(](((((]]]\r
+((((]]]]]]\r
+((]]]]]]](\r
+((((((]]](\r
+(((((]]]((\r
+((((]]](((\r
+((((]]](((\r
--- /dev/null
+ 10 \r
+((]]]]]]((\r
+(]]]((]]](\r
+(]]((((]](\r
+((]]((]]((\r
+(]]]]]]]](\r
+]]]]((]]]]\r
+]]]((((]]]\r
+]]]]((]]]]\r
+(]]]]]]]](\r
+((]]]]]]((\r
--- /dev/null
+ 10 \r
+(]]]]]]]((\r
+]]]]]]]]](\r
+]]](((]]]]\r
+]](((((]]]\r
+]]](((]]]]\r
+(]]]]]]]]]\r
+((]]]((]]]\r
+((((((]]]]\r
+((]]]]]]](\r
+((]]]]]]((\r
--- /dev/null
+<HTML>\r
+<HEAD><TITLE>super mario like game</TITLE></HEAD>\r
+\r
+<BODY text=#A0A0ff vLink=#0000ff aLink=#0000ff link=#0000ff bgColor=#000000>\r
+\r
+<CENTER><H1>super mario like game</H1></CENTER>\r
+<BR>\r
+<BR>\r
+<BR>Jump around, collect coins and dont touch snails!\r
+\r
+<BR><IMG SRC="sshot.png">\r
+</BODY>\r
+</HTML>
\ No newline at end of file
--- /dev/null
+ 20 \r
+(DDDDDDDDDDDDDDDDDD(\r
+D(EEEEEEEEEEEEEEEE(=\r
+DE(EEEEEEEEEEEEEE(>=\r
+DEE@@@@@@@@@@@@@@?>=\r
+DEE@???????????D@?>=\r
+DEE@??CCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@?CCCCCCCCCCD@?>=\r
+DEE@DDDDDDDDDDDD@?>=\r
+DEE@@@@@@@@@@@@@@?>=\r
+DE=??????????????(>=\r
+D(>>>>>>>>>>>>>>>>(=\r
+(==================(\r
--- /dev/null
+ 20 \r
+(RRRRRQQQQ((((((((((\r
+RRQQQQQQQQQ(RRRR((((\r
+RQQQQQQQQQQRRQQQQ(((\r
+RQQQQQQQQQQQQQQQ((((\r
+QQQQQQQQQQQQQ(((((((\r
+QQQQQQQQQ((\81((((((((\r
+(QQQQQQQ\81\81\81\81\81\81((((((\r
+((\81\81\81\81\81\81\81\81\81\81\81\81\81(((((\r
+((\81\81\81\81\81\81\81\81\81\81\81\81((((((\r
+(((\81\81\81\81\81\81(\81(((((((((\r
+(((((\81\81\81\81\81((((((((((\r
+((((((JJJJJ(((((((((\r
+((((((JJJJJJ((((((((\r
+(((((JJJJJIJ((((((((\r
+(((((JIIIIJJ((((((((\r
+((((IIIIIIIJ((((((((\r
+((((IIIIIIJJJ(((((((\r
+((XXXIII(JJJJXXX((((\r
+(XXXXXXX((JXXXXXXX((\r
+((XXXXX((((XXXXXX(((\r
--- /dev/null
+ 20 \r
+(RRRRQQQQ(((((((((((\r
+RQQQQQQQQQ((((((((((\r
+QQQQQQQQQQRRRRR(((((\r
+QQQQQQQQQQQQQQQQ((((\r
+QQQQQQQQQQQQQQQ(((((\r
+QQQQQQQQ((\81(((((((((\r
+QQQQQQQ\81\81\81\81\81\81(((((((\r
+(\81\81\81\81\81\81\81\81\81\81\81\81\81((((((\r
+(\81\81\81\81\81\81\81\81\81\81\81\81(((((((\r
+((\81\81\81\81\81\81(\81((((((((((\r
+((((\81\81\81\81\81(((((((((((\r
+(((((JJJJJ((((((((((\r
+(((((JJJJJJ(((((((((\r
+((((JJJJJIJ(((((((((\r
+((((JIIIIJJ(((((((((\r
+(((((IIIIIJ(((((((((\r
+(((((IIIII((((((((((\r
+((((XXXXXXXX((((((((\r
+(((XXXXXXXXXX(((((((\r
+((((XXXXXXXX((((((((\r
--- /dev/null
+ 10 \r
+(((TTTT(((\r
+(TTTSSSSR(\r
+TTSSSSSSSR\r
+TSSS\\SSSR\r
+TSSS\]SSSR\r
+TSSS\]SSSR\r
+TSSS\]SSSR\r
+TSSS\]SSSR\r
+(SRSSSSRR(\r
+(((RRRR(((\r
--- /dev/null
+ 10 \r
+(((TTTT(((((((((((((\r
+(TTTSSSSR((FF((((FC(\r
+TTSSSSSSSR(FCC((FC@(\r
+TSSS\\SSSR((CCCFC@((\r
+TSSS\]SSSR(((CCC@(((\r
+TSSS\]SSSR(((FCC@(((\r
+TSSS\]SSSR((FCC@C@((\r
+TSSS\]SSSR(FC@((@C@(\r
+(SRSSSSRR((C@((((@@(\r
+(((RRRR(((((((((((((\r
--- /dev/null
+ 10 \r
+((QQQQ((((((((((((((\r
+(QQQQQQ((((FF((((FC(\r
+((jjjj(((((FCC((FC@(\r
+((jjjj((((((CCCFC@((\r
+(c(jj(c((((((CCC@(((\r
+c]]]]]]c(((((FCC@(((\r
+((]]]]((((((FCC@C@((\r
+(]]]]]]((((FC@((@C@(\r
+XX]((]XX(((C@((((@@(\r
+XXX((XXX((((((((((((\r
--- /dev/null
+ 30 \r
+(((((((((((((((((((((((((\\(\((((((((((((((((((((((((](((((((((]((((]((((]](((((((((((((((((((((((((\r
+((((((((((((((((((((((((\((((((((\\(((((((((\(((((((((]]((\(((\(((\((]](]]((((((((((((((((((((((((((\r
+((((((((((((((((\((\((\(\]\\((\(\(((((((]((((((((](((\((\]((((\(]\(\(]]]]]](((((((((((((((((((((((((\r
+(((((((((((((((((((]t\\(]]]\\\](](((\((]((](](((((((]((((\(\]](\((]\(((((\\(](](\]\(((((((((](((((((\r
+((((((((((t((\8fwt\8f\8f\\\t](tt\(]\\((\(](\\t\t((((]\t(](((\((\]\](\(\]](]]((]\(]](((]`\`\(\\](((((((((((\r
+(((((t((((((tttttt\8ft(t\\(\\((\(]]]\t((\\]\]((((\(](\((\\(]\(](`\\`]](\]\\]\(t\\\`\\t(t\]((](((((((((\r
+((((t(tt(t((t\8fttt\8ftt]t\\(](\\(t(t\\ttt\]tt]t\\(]\tt]](\((t]\](\t]((t]\t(]`\t(]]tt\\(tt\\]](]((((((((\r
+((((((\(ttt(tt\8f\8f\8ft\8f\tt]tt\\\\t\]\tt\(\t]((\\\tt\((]](\\t]tt(\\\(tt(t\(`]\`]]\\\\\(\`tt``^```(`((((((\r
+((((tt(tttt\8f\8ftttttt\\t]\tt]ttt(]\\\\\t\\t(\\((\\t\]t\\]]`\\\](\`]\\(\\]\`(t\\\t\\tt\\^(``]\(\]((]`((\r
+(((t\(t\ttt\]\8ft\8ftt\t\8ft]]]\\t]ttt]]t\t\\]ttt\]](tt\(]t\\\]t\t`t\\]\\tt]\^\t]\\\\\tt\\`t\t`^`(\`\]]]((\r
+(((((tt]]t\\twt\\8f\\t\8f\]tt]]t(]\t\tt]\tttt\tt]\((t(\\\t\`]t(\]t\\`\t\\(\\\t\t]^\\t\\\tt\t\\^```(`(]((\r
+((t(](\ttttwttw]t\\tt(^t\(t]\]tt\(\t]t\\t(]]\]ttt\\tttt\]\^]\tt\]``\t`(\tt\`^\\\\\ttt\tt\\`]\\^((\((\r
+]t(]]]]tt]t\t^t\tt\t(\](tt]\tt]\t\\\\\]t\tt`t\\`^]\]t\]]]tt\`(`(]`\tt\\`\t\t]\\tt\ttt^t\\`\`]``(\]((\r
+(]t]t\\t\\t\^t\^t\](\]]\]]t\(ttttt\]t\t\`\t\t\t\\\\`^t`(t(]]t]t`]]t]\\\^tt\]`\t\\t\\``t\\`\``\]t``\(\r
+(]t(tt\\\\\\\\\]^t]]t^t]tt\t^\\]]]]`t\]\t`]\t^```\^^]`\tt^t]`\`]^^\\\\\\\\]^(`\^`\\\\\\^``\```]`\`(]\r
+(](t^^]\\]\\\]t^\]]^]]\^^\]]t\`\^^``]t`^\\`\\`^`]\^\`t]\^^^`^]\\^^^\\\\\]]\`\^````\\]^`\`^`\```]``](\r
+]]]]](t]`t]^\]^]]^]^]^^]^^]`\^\]`]\]`\\\\``]`\`t\\`^]```^`]^^^^^]\^^\t\``]`\\``]\\^\^^^\\\```````]]]\r
+((^((]](`]]`]^^`^^]^`]]\]``\\(\(\`]``\```]`^^^````^````t(]`^t]^^t`\\]^^\^\^`^\^``\]\\````^`\`]```(](\r
+](^]((]\`(``]]]^``^t]^^]]t]``t`]``(`````\``\``\\`\```t`^t^(^^^^^]]t^`(\\^\^`(`^^^`\^```\````\]````](\r
+]((^^]]`]^]^\`]``t^```````\`^`\`\``\^t```````]`````]^`^]]^^t^(^(^]``^```\\\`^]]]^^^^]``^````t]``]``(\r
+(((^((]``^^`^^``^^^^^^]]t`t````^`^`^`^\^`]````````````^`````^^^`]`]^^^^^((]``^^`^]]^^`````]``^^(t`(]\r
+(]^(^(`(`^]]`]`^^^`]^```^^`````t`\^`^`````````^`(`^t^`t^`^^^(```t(`^]]^^^^```^]`]``]^`(```(^(`tttt((\r
+^(^(^(((t](((`]]`^`t``t```^``^``````^````(^`(````^^^``^`(```^]``]^(]`^```]````````(]^``]t]`^`](^(`((\r
+(((tt^(^((((]`^`^```t````^```^^^]``````](`tt``]``^```(^^`]``(``t````t```(``]`^]^t`]^`(`^^^^``tt]`(((\r
+(((((((]^](((``]`(`^`]^^^``]`]]((```(`(^```]((]^`^`````````(`((t``^`````]`^(^^```(`^`](`t]^((^(`((((\r
+(((((((((]((t(^`(`^``((``(^(``^(((((((((``((^``````^(^`t`(`^t``````^]((^^^`](^```((`]((`(]^`((^]((((\r
+(((((((((((t(^``(`(t^(^(`^(^^^((^(`((^(`]((((](((````^(`((((``((``((``(^`]`(]]]]``]``]````(`(``(`(((\r
+(((((((((((((^(^((((((^^(((^(((^(((^^`((`((]`((((^`((`(^``((```^`((((^(((t`(^`((`^(`(]`^`(((`^((((((\r
+((((((((((((((((((((^(((^(((((^(((((((((((((((((^(`^^`^(((^((^((``(((`((((`](((((((^(``(((`(((((((((\r
+(((((((((((((((((((^(((((((^((^(((((((((((((((((((((^(`(^^(`((((((^^(^((`((((](`((((((((((((((((((((\r
--- /dev/null
+ 20 \r
+((((((((((((((((((((((((((((((q((((q(q((((((((((((((((((((((\r
+((((((((((q((q(((q(((qq(((((((qq\8aqqqq(((((((qq((((((((((((((\r
+((((((((((q(q(((q(qq((qq((q((qqq(((q(qq(qq;(qq(q((((((((((((\r
+(((((((((qq(q(\8a(((q(q(q(q((((q2qqq(qqq(q(;((;q(q((((((((((((\r
+(((((qqq(q(q(((222\8aqqq(((\8aq(qqqq\8aq2qqqq2((;\8a((q(((q?q(((((((\r
+((((qq(nq(((q((2(qq2q2q(((nn(\8aq(qqq(nqq2n2;(qnq?(;???(((((((\r
+((((((qqqq2q(qqq2\8a(22\8a(qqq(\8aqq2n(2nqq2qqq(nq?q?\8a2;;;?(((((((\r
+(((((qn(qqqq\8a(\8a(qXn22X\8a(nq\8a\8aq2(22qq22(22(2?Y??2q;?q;22((((((\r
+((((q((qq2qq\8aqqnq2nX\8aX\8aqq2\8a\8aqq\8aqX2q22((qq;(Yq???;;2;;2q(((((\r
+((((((q(22(2q2(((nqqXX\8a(XX2Xq(q2\8a22nq22q?qY((?(?qqqq;???((((\r
+(((q(qq(qqqYYXq((YXXY\8aX2\8a2\8aX2\8aq;?2???2q;;q;X?2???;?;Y;??q(((\r
+(((q(q(q22222YYX2(XX?X2q2?qX2q?YYYn2q;Y;X2???X?;?;;;??;;((((\r
+(((n(qq(\8a2\8a22XYqXY?XY;2;???qq?;?Y;?2Y;2;;Y;?XX9X9;;(9;??;(((\r
+((((qnX\8a?YY22\9f\9f???YYqqX?;qXqqq;;???;@;;;;??X\9d;;?X?q;;;9?;(?(\r
+(nnn\8aX2?2??YX\9f\9fX2q?X;2;;?qq;;;q;?;;;;;;;\9f;X\9d;9;?X;;@;@;;?99(\r
+qqqnq\8aq222\8aX\9f\9f?Y(\9fY??;qq?2;?;q?;?;;?@X;;;?\9f;9999;9@;;;;;9n?9\r
+nqnqqn2??Y??(X?Y\9f\9fX?;?;?X?;Xq;;\9fX;n\9f@;\9f;;;;\9f9;;2;;@;;?;;9((9\r
+nnqqq2(?\9fn?n\9f\9f\9f?\9fY22X;X?q;;;;;qqq;;q;\9f;;;q9X\9d;;99;@;\9d;9;;;??\r
+qnq(qqnqq???\9f\9fX(?n\9fqX(XXqq2;nqq;;;\9f\9fq\9f\9f;\9f\9f;Xq;q;\9d\9d9n;\9d;??n?9\r
+((nn((q\9f(\9fnXn\9f(n\9fXn\9fn(XqqX2\9f\9f;q\9f(qq;(\9f\9fq\9f(9\9d9\9fq\9d\9d\9d?\9d;\9f\9f?????\r
--- /dev/null
+ 60 \r
+(((((((((((((((X(((((X((T(((((((((((((((\r
+(((((((((((((((X((T((X(X((((((((((((((((\r
+((((((((((((X(((((X(X((((((X(X((((((((((\r
+(((((((((((((XX((X(((((((((T((((((((((((\r
+((((((XX((((XX(XTT(X(TXXT(((((X(((((((((\r
+((((((((((((((X((X(TXXT\9f\9f(XXXX((((((((((\r
+((((((X(X((XXX(XXXTTT(XXXTX(X(((((((((((\r
+(((((((XX((X(XX((T((XXXX(T((XXX(X(X(((((\r
+((((X(X((XXXT((XX(XXX(TXXT\9fXX(X\9f(X((((((\r
+((((XXX((((XT(X(XXXTTT(XX\9fX\9f\9f\9f\9fX((X(((((\r
+(((((X((((XT((XX((XT(XTX((XX(\9fX((((\9f\9f(((\r
+(((X((X(((TX((XXXXTXX(TT\9f(((((\9fX\9f((\9fX(((\r
+((((X(XX((X(XX(X(TX(((TTT\9fX\9f(\9fXX\9f(((((((\r
+((((X(XXXXXX((XXTTXX(TXTTT(T(X\9fX(\9f(XX(((\r
+(((((X(XX(TXXTTT(TXXT(X((X((((X\9f(X(XX(((\r
+((((((X((X(XXXXXT(XXX(TT((T(X(((((((X(((\r
+(((XX((XX(((X(TXXX(TX(TTTTXT(\9f(((\9f((\9f(((\r
+(X(((X(((X(T((X(X(XX(T(XXTX(T\9fX((\9f\9fX((((\r
+((XX(X((((((XTX(TTTXTXT(XX((XX(\9f(\9f\9f(((X(\r
+((((((XXXX((X(XXTTXT(XX\9fTT(T(((X\9f((XX(((\r
+(((XXXX(X(((X(T(TTTTXXXXTX(X(XXXX(X(\9f(X(\r
+(((((((((X(XXXXX(XT(X(X((X(XXX(XXX((\9f(((\r
+X(((((X((X(X(X((XTT(((((XX\9f(XXXX\9f(\9f((X\9f(\r
+(((XXX(XXX((X(((XTXX(T(X((\9f(((\9fX(XXXX(X(\r
+(((X(((TTX((TTXTT(XXXT(X\9f\9f(XXX((XX\9f((X(\9f\r
+((X((((XTX(((X(XX(XTT(XXXX((XX(XX\9f(X((\9fX\r
+(((((TX(((X((T(XTTXXXTXX(XX\9fX(X((\9f((((((\r
+((X(X(TXTX(XX((XTTXX(X(X\9fXX\9fT\9fXXXX(\9f(\9f((\r
+((((X(X(X((TXTTT(((X\9f\9fX(XT((XXXXX(\9f(((\9f(\r
+((((X((X((T((X(TXXXXXXX\9f(T\9fX(XX\9f\9f((\9f\9f(((\r
+((((X(((TXTXX(XXX(((XXX(\9fX\9f\9f(X\9f\9f(\9f\9f\9f\9f\9f((\r
+((XX((XXXX((XX(((XX(XXX(T\9f\9f\9fX\9f(XXX\9f\9f((((\r
+((((((X((XTXXTTTXXXXXX\9a\9a\9a\9f(TXT\9f(\9f((((X((\r
+(((X(((XXXTTXTT(T(TX(\9f\9a\9f\9aX\9f\9f\9f(X(\9f\9f(X((((\r
+((X(((((XXT(TTT(X((T(\9aX\9aXXT\9f\9f\9f(\9f\9f\9f((((((\r
+(X(XXXX(X((X((TXTT(TT\9f\9aXX\9f\9f\9fXX(X(\9f(XX(((\r
+((((X(((XXXXTXXX(((T\9f\9a\9fXX\9fX\9fX\9fX\9f(\9fX(((((\r
+(((((((XX(XXX(XXTX((\9f\9a\9a\9aT\9f\9f(\9fTXX(TX(\9f(((\r
+(((((XXXXXXX((X(X(\9f\9f\9f\9a\9a\9a\9fX\9f\9f\9fXT(X((X((((\r
+(((X(((XXXXX(XT(TT(X\9f\9a\9a\9aX\9f\9f\9fTT\9fX\9f((((\9f((\r
+((((((XX(XX((X(XTX\9f\9f\9a\9a\9aX((XXXXTX(((\9f((((\r
+(((((X(XXXXXXXXX\9f(\9f(\9f\9aX\9a(X\9fXTXX((X((((((\r
+(((((((X(X\9fX(XX((T\9f\9f\9fXX\9f\9f(XX\9fXXXX(((((\9f(\r
+((((((XX(XX((XXTX(X(\9a\9a\9a\9fX(XXXX(XXX(X((((\r
+((((((((((XXX\9fX\9a\9a\9f(\9a\9a\9aX\9f(X(TXXX((X((((((\r
+((((((((((X(\9fX(\9a\9f\9aX\9f\9a\9aXX(X(XXX(X((((((((\r
+(((((((((XXX(X\9f\9a\9a\9fX\9f\9aXX\9f\9fX(((X(((((\9f((((\r
+(((((((((((X((X\9a\9a\9f\9f\9f\9f\9aXXX(X(\9fX(\9f\9f(((((((\r
+((((((((((XXX\9f(\9a\9a\9f\9f\9f\9f\9fX\9f\9f(X(((\9f(\9f\9f((((((\r
+(((((((((((((XXX(\9a\9a\9f\9a\9aXX(((((X((((((((((\r
+(((((((((((\9f(X((T\9a\9f\9aXX\9f\9f((((X(\9f(((((((((\r
+((((((((((X(((XX(\9a\9aX\9a\9a\9f\9f((((((((((((((((\r
+((((((((((((((((\9fX\9aXX\9aX(\9f(((((\9f(((((((((\r
+((((((((((((((X(XX\9a\9f\9f\9f((\9f(((((((((((((((\r
+(((((((((((\9f(((XX(\9a\9a\9a\9a(\9f((((((((((((((((\r
+((((((((((((((((((\9a\9a\9a\9aX(((\9f(((((((((((((\r
+((((((((((((((\9f(((\9a\9a\9a\9a((((((((((((((((((\r
+((((((((((((((((((\9a\9a\9a\9a((((((((((((((((((\r
+(((((((((((((((\9f((\9a\9a\9a\9a((((((((((((((((((\r
+((((((((((((((((((\9a\9a\9a(((((((((((((((((((\r
--- /dev/null
+' Super Mario style game\r
+' by Svjatoslav Agejenko 1999\r
+' E-mail: svjatoslavagejenko@gmail.com\r
+\r
+DECLARE SUB CL ()\r
+DECLARE SUB esc ()\r
+DECLARE SUB aargh ()\r
+DECLARE SUB die ()\r
+\r
+\r
+DECLARE SUB dead ()\r
+DEFINT A-Z\r
+DECLARE SUB level1 ()\r
+DECLARE SUB nait (zaz%)\r
+DECLARE SUB wiew1 (a1%, b1%, c1%, d1%, a$)\r
+DECLARE SUB level ()\r
+DECLARE SUB save (a$)\r
+DECLARE SUB picedit ()\r
+DECLARE SUB wiew (a1%, b1%, c1%, d1%, a$)\r
+DECLARE SUB intro ()\r
+DECLARE SUB inpur ()\r
+DECLARE SUB mousedriver (AX%, bx%, cx%, dx%, lb%, rb%, EX%)\r
+DECLARE SUB tahed ()\r
+\r
+DIM SHARED sj$\r
+DIM SHARED ekraan\r
+DIM SHARED text$(1 TO 500)\r
+DIM SHARED pikkus\r
+\r
+\r
+DIM SHARED ruum(-5 TO 20, -5 TO 20) AS STRING\r
+DIM SHARED ruum1(-5 TO 20, -5 TO 20) AS STRING\r
+DIM SHARED maa(1 TO 11, 1 TO 10) AS STRING * 15\r
+DIM SHARED maa1(1 TO 10) AS INTEGER\r
+DIM SHARED maailm AS INTEGER\r
+DIM SHARED maailm1 AS INTEGER\r
+DIM SHARED text5(1 TO 15) AS STRING * 15\r
+DIM SHARED pilv(2100)\r
+DIM SHARED kast(202)\r
+DIM SHARED tellis(202)\r
+DIM SHARED poosas(1000)\r
+DIM SHARED puu(2000)\r
+DIM SHARED tuhi(202)\r
+DIM SHARED munt(202)\r
+DIM SHARED munt1(400)\r
+DIM SHARED munt2(200)\r
+DIM SHARED mari0(402)\r
+DIM SHARED mari(202, 1 TO 5)\r
+DIM SHARED koll(1 TO 230, 1 TO 10)\r
+DIM SHARED koll1(1 TO 202, 1 TO 5)\r
+DIM SHARED kolla(1 TO 10)\r
+DIM SHARED kollb(1 TO 10)\r
+DIM SHARED kollal(1 TO 10)\r
+DIM SHARED kolled(1 TO 10)\r
+\r
+DIM SHARED rahaz(1 TO 5)\r
+DIM SHARED number(100, 0 TO 11)\r
+DIM SHARED elud\r
+\r
+DIM SHARED raha\r
+DIM SHARED clra, clrb\r
+DIM SHARED a1, b1\r
+\r
+DIM SHARED prog\r
+prog = 1\r
+SCREEN 13\r
+maailm = 1\r
+maailm1 = 1\r
+level1\r
+1\r
+ekraan = 13: zpqf = 4\r
+\r
+FOR a = 0 TO 254\r
+OUT &H3C8, a\r
+OUT &H3C9, 0\r
+OUT &H3C9, 0\r
+OUT &H3C9, 0\r
+NEXT a\r
+OUT &H3C8, 255\r
+OUT &H3C9, 60\r
+OUT &H3C9, 60\r
+OUT &H3C9, 60\r
+LOCATE 20, 3\r
+COLOR 255\r
+PRINT "LOADING "\r
+\r
+\r
+CL\r
+wiew 0, 0, 1, 1, "pilv"\r
+GET (1, 1)-(109, 35), pilv\r
+CL\r
+wiew 0, 0, 1, 1, "kast"\r
+GET (1, 2)-(20, 21), kast\r
+CL\r
+wiew 0, 0, 1, 1, "tellis"\r
+GET (1, 2)-(20, 21), tellis\r
+CL\r
+GET (1, 2)-(20, 21), tuhi\r
+wiew 0, 0, 1, 1, "mario1"\r
+GET (1, 2)-(20, 21), mari(202, 1)\r
+CL\r
+wiew1 0, 0, 1, 1, "mario1"\r
+GET (3, 2)-(22, 21), mari(202, 2)\r
+CL\r
+wiew 0, 0, 1, 1, "mario2"\r
+GET (1, 2)-(20, 21), mari(202, 3)\r
+CL\r
+wiew1 0, 0, 1, 1, "mario2"\r
+GET (3, 2)-(22, 21), mari(202, 4)\r
+CL\r
+wiew 0, 0, 1, 1, "poosas"\r
+GET (1, 1)-(60, 21), poosas\r
+CL\r
+wiew 0, 0, 1, 1, "puu"\r
+GET (1, 1)-(40, 60), puu\r
+CL\r
+wiew 0, 0, 1, 1, "munt"\r
+GET (1, 1)-(10, 11), munt\r
+CL\r
+wiew 0, 0, 1, 1, "munt1"\r
+GET (0, 2)-(20, 11), munt1\r
+CL\r
+wiew 0, 0, 1, 1, "munt2"\r
+GET (0, 2)-(20, 11), munt2\r
+\r
+CL\r
+wiew 0, 0, 1, 1, "0"\r
+GET (0, 2)-(10, 11), number(100, 0)\r
+CL\r
+wiew 0, 0, 1, 1, "1"\r
+GET (0, 2)-(10, 11), number(100, 1)\r
+CL\r
+wiew 0, 0, 1, 1, "2"\r
+GET (0, 2)-(10, 11), number(100, 2)\r
+CL\r
+wiew 0, 0, 1, 1, "3"\r
+GET (0, 2)-(10, 11), number(100, 3)\r
+CL\r
+wiew 0, 0, 1, 1, "4"\r
+GET (0, 2)-(10, 11), number(100, 4)\r
+CL\r
+wiew 0, 0, 1, 1, "5"\r
+GET (0, 2)-(10, 11), number(100, 5)\r
+CL\r
+wiew 0, 0, 1, 1, "6"\r
+GET (0, 2)-(10, 11), number(100, 6)\r
+CL\r
+wiew 0, 0, 1, 1, "7"\r
+GET (0, 2)-(10, 11), number(100, 7)\r
+CL\r
+wiew 0, 0, 1, 1, "8"\r
+GET (0, 2)-(10, 11), number(100, 8)\r
+CL\r
+GET (0, 2)-(10, 11), number(100, 10)\r
+wiew 0, 0, 1, 1, "9"\r
+GET (0, 2)-(10, 11), number(100, 9)\r
+\r
+CL\r
+wiew 0, 0, 1, 1, "tigu"\r
+GET (1, 2)-(20, 21), koll1(202, 1)\r
+CL\r
+wiew 0, 0, 1, 1, "tigu1"\r
+GET (3, 2)-(22, 21), koll1(202, 2)\r
+CL\r
+wiew1 0, 0, 1, 1, "tigu"\r
+GET (1, 2)-(20, 21), koll1(202, 3)\r
+CL\r
+wiew1 0, 0, 1, 1, "tigu1"\r
+GET (3, 2)-(22, 21), koll1(202, 4)\r
+\r
+SCREEN 0\r
+SCREEN 13\r
+level\r
+a1 = 50\r
+b1 = 50\r
+edasi = 0\r
+liig = 1\r
+ov1 = 1\r
+ov2 = 2\r
+raha = 0\r
+elud = 3\r
+z = 1\r
+nait 0\r
+12\r
+IF b1 > 0 THEN GET (a1, b1)-(a1 + 20, b1 + 20), mari0: PUT (a1, b1), mari(202, liig), OR\r
+\r
+FOR ox = 1 TO 10\r
+IF kollb(ox) < 170 AND z = 1 THEN\r
+ kollb(ox) = kollb(ox) + kollal(ox)\r
+ kolla(ox) = kolla(ox) + kolled(ox)\r
+ GET (kolla(ox), kollb(ox))-(kolla(ox) + 20, kollb(ox) + 20), koll(202, ox)\r
+ IF kolled(ox) <= 0 THEN kolll = 1 ELSE kolll = 3\r
+ IF zz > 2 THEN kolll = kolll + 1: IF zz = 3 THEN kollal(ox) = kollal(ox) + 1\r
+ PUT (kolla(ox), kollb(ox)), koll1(202, kolll)\r
+END IF\r
+NEXT ox\r
+SOUND 0, .5\r
+z = z + 1\r
+IF z > 3 THEN z = 1\r
+IF z = 1 THEN\r
+zz = zz + 1\r
+IF zz > 5 THEN zz = 0\r
+alla = alla + 1\r
+IF edasi > 0 THEN edasi = edasi - 1: zy = zy + 1\r
+IF edasi < 0 THEN edasi = edasi + 1: zy = zy + 1\r
+IF zy > 2 THEN zy = 1\r
+IF zy = 2 THEN ov1 = 1: ov2 = 2\r
+IF zy = 1 THEN ov1 = 3: ov2 = 4\r
+\r
+FOR ox = 1 TO 10\r
+IF kollb(ox) < 170 THEN\r
+IF ruum((kolla(ox) + 20) / 20, (kollb(ox) + 9) / 20) = "m" THEN kollal(ox) = -1\r
+IF kolla(ox) > 270 THEN kolled(ox) = -1\r
+IF kolla(ox) < 2 THEN kolled(ox) = 1\r
+IF ruum((kolla(ox) + 28) / 20, kollb(ox) / 20) = "m" THEN kolled(ox) = -1\r
+IF ruum((kolla(ox) + 10) / 20, kollb(ox) / 20) = "m" THEN kolled(ox) = 1\r
+IF kolla(ox) - 20 < a1 AND kolla(ox) + 20 > a1 AND kollb(ox) - 5 < b1 AND kollb(ox) + 20 > b1 THEN aargh: dead: GOTO 12\r
+END IF\r
+NEXT ox\r
+END IF\r
+\r
+IF ruum((a1 + 15) / 20, (b1 + 9) / 20) = "m" THEN alla = -1: ao = 0\r
+IF ruum((a1 + 25) / 20, (b1 + 9) / 20) = "m" THEN alla = -1: ao = 0\r
+IF ruum((a1 + 20) / 20, (b1 - 8) / 20) = "m" THEN alla = 1: ao = 20\r
+IF ruum((a1 + 28) / 20, (b1) / 20) = "m" THEN edasi = -1: qa = 1\r
+IF ruum((a1 + 10) / 20, (b1) / 20) = "m" THEN edasi = 1: qa = 1\r
+\r
+IF ruum1((a1 + 20) / 20, (b1 - 8) / 20) = "o" THEN alla = 1: ruum1((a1 + 20) / 20, (b1 - 8) / 20) = "": ruum((a1 + 20) / 20, (b1 - 8) / 20) = "2": clra = ((a1 + 20) / 20) - 1: clrb = (b1 - 8) / 20: clr = 1: SOUND 50, .5\r
+IF ruum((a1 + 20) / 20, (b1) / 20) = "1" THEN ruum((a1 + 20) / 20, (b1) / 20) = "2": clra = ((a1 + 21) / 20) - 1: clrb = (b1) / 20: clr = 1: raha = raha + 1: nait 1: SOUND 1000, 1: SOUND 2000, 1\r
+ao = ao + 1\r
+a$ = INKEY$\r
+IF a$ = CHR$(0) + "H" AND ao < 10 THEN alla = -6\r
+IF a$ = CHR$(0) + "M" AND qa = 0 THEN edasi = edasi + 3: liig = ov1\r
+IF a$ = CHR$(0) + "K" AND qa = 0 THEN edasi = edasi - 3: liig = ov2\r
+IF a$ = CHR$(27) THEN esc\r
+IF a$ = "+" AND qa = 0 THEN maailm = maailm + 1: level: GOTO 12\r
+IF qa <> 0 THEN qa = 0\r
+IF edasi > 5 THEN edasi = 3\r
+IF edasi < -5 THEN edasi = -3\r
+IF alla > 3 THEN alla = 3\r
+\r
+IF b1 > 0 THEN PUT (a1, b1), mari0, PSET\r
+\r
+IF z = 1 THEN\r
+FOR ox = 10 TO 1 STEP -1\r
+IF kollb(ox) < 170 THEN PUT (kolla(ox), kollb(ox)), koll(202, ox), PSET\r
+NEXT ox\r
+END IF\r
+\r
+\r
+b1 = b1 + alla\r
+a1 = a1 + edasi\r
+IF clr > 0 THEN clr = 0: PUT (clra * 20, clrb * 20), tuhi, PSET\r
+IF a1 > 280 THEN maailm = maailm + 1: level: a1 = 3\r
+IF a1 < 2 THEN maailm = maailm - 1: level: a1 = 279\r
+IF b1 > 170 THEN FOR a = 3000 TO 500 STEP -100: SOUND a, .3: NEXT a: dead\r
+GOTO 12\r
+\r
+SUB aargh\r
+a = 1700\r
+b = 1900\r
+FOR c = 1 TO 50\r
+a = a + 3\r
+b = b - 5\r
+SOUND a, .2\r
+SOUND b, .2\r
+NEXT c\r
+END SUB\r
+\r
+SUB CL\r
+LINE (0, 0)-(319, 150), 0, BF\r
+LOCATE 20, 10 + prog\r
+prog = prog + 1\r
+PRINT "."\r
+END SUB\r
+\r
+SUB dead\r
+IF maailm > 1 THEN maailm = maailm - 1\r
+\r
+level\r
+a1 = 20\r
+b1 = 100\r
+elud = elud - 1\r
+nait 0\r
+END SUB\r
+\r
+SUB die\r
+DIM diep(1 TO 2000)\r
+GET (0, 0)-(150, 20), diep\r
+LOCATE 1, 1\r
+PRINT "You are "\r
+LOCATE 2, 1\r
+PRINT " killed! "\r
+ \r
+FOR x = 0 TO 80\r
+FOR y = 0 TO 16\r
+IF POINT(x, y) > 0 THEN LINE (x * 5, y * 5 + 50)-(x * 5 + 4, y * 5 + 54), 4, BF\r
+NEXT y\r
+NEXT x\r
+PUT (0, 0), diep, PSET\r
+\r
+FOR a = 1 TO 100\r
+x = RND * 290 + 4\r
+y = RND * 170 + 4\r
+GET (x, y)-(x + 20, y + 20), diep\r
+x = x + RND * 4 - 2\r
+y = y + RND * 4 - 1\r
+PUT (x, y), diep, PSET\r
+NEXT a\r
+FOR a = 1 TO 50\r
+a$ = INKEY$\r
+NEXT a\r
+a$ = INPUT$(1)\r
+\r
+FOR a = 0 TO 100\r
+SOUND 0, .05\r
+LINE (0, a)-(320, a), 4\r
+LINE (0, 200 - a)-(320, 200 - a), 4\r
+NEXT a\r
+FOR a = 32 TO 0 STEP -1\r
+SOUND 0, .5\r
+OUT &H3C8, 4\r
+OUT &H3C9, a\r
+OUT &H3C9, 0\r
+OUT &H3C9, 0\r
+NEXT a\r
+END\r
+\r
+END SUB\r
+\r
+SUB esc\r
+FOR b = 0 TO 20\r
+FOR a = b TO 200 STEP 20\r
+LINE (0, a)-(320, a), 0\r
+NEXT a\r
+SOUND 0, .5\r
+NEXT b\r
+SYSTEM\r
+\r
+END SUB\r
+\r
+SUB inpur\r
+sj$ = ""\r
+WHILE sj$ = ""\r
+sj$ = INKEY$\r
+WEND\r
+END SUB\r
+\r
+SUB intro\r
+CLS\r
+wiew 2, 2, 10, 1, "win.i01"\r
+END SUB\r
+\r
+SUB level\r
+IF maailm > 10 THEN\r
+CLS\r
+PRINT "Mission complete!"\r
+PRINT "Game over"\r
+END\r
+END IF\r
+\r
+FOR a = 1 TO 10\r
+text5(a + 1) = maa(a, maailm)\r
+NEXT a\r
+\r
+FOR a = 1 TO 10\r
+FOR b = 1 TO 15\r
+IF ruum(b, a - 2) = "2" THEN MID$(maa(a, maailm1), b) = " "\r
+NEXT b\r
+NEXT a\r
+maailm1 = maailm\r
+\r
+FOR a = -3 TO 20\r
+FOR b = -3 TO 20\r
+ruum(a, b) = ""\r
+ruum1(a, b) = ""\r
+NEXT b\r
+NEXT a\r
+\r
+FOR a = 1 TO 10\r
+kollb(a) = 1000\r
+kolled(a) = 1\r
+kollal(a) = 0\r
+NEXT a\r
+\r
+CLS\r
+PAINT (1, 1), maa1(maailm)\r
+GET (1, 2)-(20, 21), tuhi\r
+FOR a = 2 TO 10\r
+FOR b = 1 TO 15\r
+c$ = RIGHT$(LEFT$(text5(a), b), 1)\r
+IF c$ = "-" THEN PUT ((b - 1) * 20, (a - 2) * 20), pilv, OR\r
+IF c$ = "." THEN PUT ((b - 1) * 20, (a - 2) * 20), poosas, OR\r
+IF c$ = "+" THEN PUT ((b - 1) * 20, (a - 2) * 20), puu, OR\r
+IF c$ = "$" THEN PUT ((b - 1) * 20, (a - 2) * 20), munt, OR: ruum(b, a - 2) = "1"\r
+IF c$ = "m" THEN PUT ((b - 1) * 20, (a - 2) * 20), kast, PSET: ruum(b, a - 2) = "m"\r
+IF c$ = "o" THEN PUT ((b - 1) * 20, (a - 2) * 20), tellis, PSET: ruum(b, a - 2) = "m": ruum1(b, a - 2) = "o"\r
+IF c$ = " " THEN ruum(b, a) = " "\r
+\r
+IF c$ = "1" THEN kolla(1) = (b - 1) * 20: kollb(1) = (a - 2) * 20: GET (kolla(1), kollb(1))-(kolla(1) + 20, kollb(1) + 20), koll(202, 1)\r
+IF c$ = "2" THEN kolla(2) = (b - 1) * 20: kollb(2) = (a - 2) * 20: GET (kolla(2), kollb(2))-(kolla(2) + 20, kollb(2) + 20), koll(202, 2)\r
+IF c$ = "3" THEN kolla(3) = (b - 1) * 20: kollb(3) = (a - 2) * 20: GET (kolla(3), kollb(3))-(kolla(3) + 20, kollb(3) + 20), koll(202, 3)\r
+IF c$ = "4" THEN kolla(4) = (b - 1) * 20: kollb(4) = (a - 2) * 20: GET (kolla(4), kollb(4))-(kolla(4) + 20, kollb(4) + 20), koll(202, 4)\r
+IF c$ = "5" THEN kolla(5) = (b - 1) * 20: kollb(5) = (a - 2) * 20: GET (kolla(5), kollb(5))-(kolla(5) + 20, kollb(5) + 20), koll(202, 5)\r
+IF c$ = "6" THEN kolla(6) = (b - 1) * 20: kollb(6) = (a - 2) * 20: GET (kolla(6), kollb(6))-(kolla(6) + 20, kollb(6) + 20), koll(202, 6)\r
+IF c$ = "7" THEN kolla(7) = (b - 1) * 20: kollb(7) = (a - 2) * 20: GET (kolla(7), kollb(7))-(kolla(7) + 20, kollb(7) + 20), koll(202, 7)\r
+IF c$ = "8" THEN kolla(8) = (b - 1) * 20: kollb(8) = (a - 2) * 20: GET (kolla(8), kollb(8))-(kolla(8) + 20, kollb(8) + 20), koll(202, 8)\r
+IF c$ = "9" THEN kolla(9) = (b - 1) * 20: kollb(9) = (a - 2) * 20: GET (kolla(9), kollb(9))-(kolla(9) + 20, kollb(9) + 20), koll(202, 9)\r
+IF c$ = "0" THEN kolla(10) = (b - 1) * 20: kollb(10) = (a - 2) * 20: GET (kolla(10), kollb(10))-(kolla(10) + 20, kollb(10) + 20), koll(202, 10)\r
+NEXT b\r
+NEXT a\r
+nait 0\r
+END SUB\r
+\r
+SUB level1\r
+maa1(1) = 1\r
+maa(1, 1) = "m "\r
+maa(2, 1) = "m - - "\r
+maa(3, 1) = "m "\r
+maa(4, 1) = "m $ $ $ $ "\r
+maa(5, 1) = "m $ $ $ $ "\r
+maa(6, 1) = "m + momom "\r
+maa(7, 1) = "m "\r
+maa(8, 1) = "m . . "\r
+maa(9, 1) = "mmmmmmmmmmmmmmm"\r
+\r
+maa1(2) = 1\r
+maa(1, 2) = " $2- "\r
+maa(2, 2) = " o$ "\r
+maa(3, 2) = " o$ - "\r
+maa(4, 2) = " o$ 3 "\r
+maa(5, 2) = " o o1 "\r
+maa(6, 2) = " + mmom"\r
+maa(7, 2) = " omom m "\r
+maa(8, 2) = " $ $ $ $ m "\r
+maa(9, 2) = "mmmm mm"\r
+\r
+maa1(3) = 1\r
+maa(1, 3) = " mmmmm"\r
+maa(2, 3) = "- $ $ mmmmm"\r
+maa(3, 3) = " $ $ $ mmmmm"\r
+maa(4, 3) = " $ $ mmmmm"\r
+maa(5, 3) = " . mmmmm"\r
+maa(6, 3) = "mmmm 1 mmmm"\r
+maa(7, 3) = " mm m"\r
+maa(8, 3) = " mmm "\r
+maa(9, 3) = "mmm mmmmm"\r
+\r
+maa1(4) = 0\r
+maa(1, 4) = "mmmmmmmmmmmmmmm"\r
+maa(2, 4) = "m$ $ $ $ $ "\r
+maa(3, 4) = "mm $m $4$ $ $ "\r
+maa(4, 4) = "m$m mmmmmommmm"\r
+maa(5, 4) = "m$ 3 2 m"\r
+maa(6, 4) = "m1 ooooooomo m"\r
+maa(7, 4) = "mooo$$$$$$$m m"\r
+maa(8, 4) = " m"\r
+maa(9, 4) = "mmmmmmmmmmmmmmm"\r
+\r
+maa1(5) = 0\r
+maa(1, 5) = "mmmmmmmmmmmmmmm"\r
+maa(2, 5) = " m "\r
+maa(3, 5) = "m m 1 3 mmmm"\r
+maa(4, 5) = "m m mmm o m"\r
+maa(5, 5) = "m m4567892o m"\r
+maa(6, 5) = "m mooooommo m"\r
+maa(7, 5) = "m mm"\r
+maa(8, 5) = "m mmm"\r
+maa(9, 5) = "mmmm mmm mmmm"\r
+\r
+maa1(6) = 1\r
+maa(1, 6) = "m "\r
+maa(2, 6) = " - $ - "\r
+maa(3, 6) = "m $ $ "\r
+maa(4, 6) = "m o o $ "\r
+maa(5, 6) = "m o o "\r
+maa(6, 6) = "m + "\r
+maa(7, 6) = "m "\r
+maa(8, 6) = "mm