You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

225 lines
7.0 KiB

<!-- SDF Tutorial Template
======================================================================
Use of this code is entirely optional. It is provided as a sample of
coding style, and a quick way to start a new tutorial for users who
may be beginners with HTML. -->
<style type="text/css">
@import url('http://sdf.org/tutorials/tutorials.css');
</style>
<!-- The title of the tutorial should be the only level-1 header
(<h1>) in the document. -->
<h1>Basic Programs</h1>
<p>A collection of basic programs for running on new and old hardware. Feel free to add your own programs and platforms.</p>
<!-- For longer tutorials, a table of contents is nice. Shorter
tutorials (like this one) really don't need it, so this section can be
omitted. Replace the <ul> tags with <ol> tags for a numbered list. -->
<ul>
<li>
<a href="#TOPS-20">TOPS-20 Programs</a>
<!-- to get an indented section of the list, we simply embed a
list inside of a list item -->
<ul>
<li>
<a href="#B10-MULTI">MULTI</a>
</li>
</ul>
</li>
<li>
<a href="#CDC6500">CDC6500 Programs</a>
<!-- to get an indented section of the list, we simply embed a
list inside of a list item -->
<ul>
<li>
<a href="#6500-MULTI">MULTI</a>
</li>
<li>
<a href="#6500-JDC">Jeferson Disk Cipher</a>
</li>
</ul>
</li>
</ul>
<!-- This is the beginning of a section. It starts with a level-2
heading (<h2>) and has been given an 'id' attribute so that it may be
linked to. -->
<h2 id="TOPS-20">TOPS-20 Programs</h2>
<!-- Remember to always contain your paragraphs in <p> tags. For
strings of code, filenames, commands, etc., which appear inside of a
paragraph, wrap them in <code> tags to differentiate them from the
rest of the paragraph's text. -->
<p>The following programs run on TOPS-20 Basic (BASIC-10)</p>
<!-- For entire blocks of code, place the <code> inside of a <pre>
instead of a <p>. Text inside of a <pre> has its whitespace characters
(space, tab, carriage-return) interpreted literally, unlike text
inside of a <p>. -->
<h3 id="B10-MULTI">Multi</h3>
<p>This is a simple multiplication table, altering line 5's data statement lets you change the length of the table. Give it a try, and put some crazy numbers in to see how it goes!</p>
<pre>
<code>
00001 REM Multi by epl692
00002 REM Change line 5 to alter the length of the table, try 24, or even 240.
00005 DATA 12
00100 READ T
00110 A$ = "#### "
00120 FOR X=1 TO T
00130 FOR Y=1 TO 12
00140 PRINT USING A$,X*Y;
00150 IF Y=12 THEN 00160 ELSE 00170
00160 PRINT ""
00170 REM NOTHING HERE
00180 NEXT Y
00190 NEXT X
00200 END
</code>
<p>Here is a example of the output from a run</p>
<samp>
MULTI.B20
Sunday, October 16, 2016 08:58:02
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
4 8 12 16 20 24 28 32 36 40 44 48
5 10 15 20 25 30 35 40 45 50 55 60
6 12 18 24 30 36 42 48 54 60 66 72
7 14 21 28 35 42 49 56 63 70 77 84
8 16 24 32 40 48 56 64 72 80 88 96
9 18 27 36 45 54 63 72 81 90 99 108
10 20 30 40 50 60 70 80 90 100 110 120
11 22 33 44 55 66 77 88 99 110 121 132
12 24 36 48 60 72 84 96 108 120 132 144
Compile time: 0.005 secs
Run time: 0.026 secs Elapsed time: 0:00:00
</samp>
</pre>
<h2 id="CDC6500">CDC6500 Programs</h2>
<p>The following programs run on CDC6500 Basic</p>
<h3 id="6500-MULTI">Multi</h3>
<p>This is a simple multiplication table, altering line 5's data statement lets you change the length of the table. Give it a try, and put some crazy numbers in to see how it goes!</p>
<pre>
<code>
1 REM Multi by epl692
2 REM Change line 5 to alter the length of the table, try 24, or even 240.
5 DATA 12
100 READ T
110 A$ = "#### "
120 FOR X=1 TO T
130 FOR Y=1 TO 12
140 PRINT USING A$,X*Y;
150 IF Y=12 THEN 160 ELSE 170
160 PRINT ""
170 REM NOTHING HERE
180 NEXT Y
190 NEXT X
200 END
</code>
<p>Here is a example of the output from a run</p>
<samp>
17/01/06. 16.25.32.
PROGRAM MULTI
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
4 8 12 16 20 24 28 32 36 40 44 48
5 10 15 20 25 30 35 40 45 50 55 60
6 12 18 24 30 36 42 48 54 60 66 72
7 14 21 28 35 42 49 56 63 70 77 84
8 16 24 32 40 48 56 64 72 80 88 96
9 18 27 36 45 54 63 72 81 90 99 108
10 20 30 40 50 60 70 80 90 100 110 120
11 22 33 44 55 66 77 88 99 110 121 132
12 24 36 48 60 72 84 96 108 120 132 144
SRU 0.366 UNTS.
RUN COMPLETE.
</samp>
</pre>
<h3 id="6500-JDC">Jefferson Disk Cipher</h3>
<p>Some Simple Encryption by tfurrows</p>
<pre>
<code>
001 REM Jefferson Disk Cipher, tfurrows@sdf.org
100 REM Setup the disks
101
104 DIM A$(16)
105 A$(1)="PDN HCAUBKQXEOZVRMGYJSFTWIL"
106 A$(2)="ECSGFONUHMR YXDZPTLQAJBWVKI"
107 A$(3)="TYFPZJS UNBWLXQREACDIOHMVKG"
108 A$(4)="XHTNOZSFUJKREDQAC MGPBLYWIV"
109 A$(5)="CPOMQZA TRFBGIWDLVHESJUKNXY"
110 A$(6)="SXCOFRKJZVEG BAPWDNIHLQMUTY"
111 A$(7)="H CLKIOZFSUPGREDBNVTYMAJWQX"
112 A$(8)="NTAJULBWZYCPDSR HVMIFGKOXEQ"
113 A$(9)="MHWNPZVLXCYJRKUSOEFADI TBGQ"
114 A$(10)="UVEZHPSDNAYLJQTXWFBG CKIROM"
115 A$(11)="ICNTHWZE LRMSQFGDAKXYJBOVUP"
116 A$(12)="SEMB QTFLPIOZCUKYVRDWXJHGNA"
117 A$(13)="RFTJWUZV HIYQOSLCMEXGDKPNAB"
118 A$(14)="EM FNZPGUQROYVXCBAHTISWDLKJ"
119 A$(15)="QPSGZDLNCIOUJK EXRAYHWFMTVB"
120 A$(16)="GSFYRQBDI ALKXPVUTZJONEWCHM"
121
150 PRINT "Enter message to encode/decode"
151 INPUT M$
152
200 REM Loop through message and set the jefferson disks
205
210 FOR I = 1 to LEN(M$)
215 C=C+1
220 IF C>16 THEN C=1
225 L = POS(A$(C),SUBSTR(M$,I,1),1)
230 IF L < LEN(A$(C)) THEN PRINT SUBSTR(A$(C),L+1,LEN(A$(C))-L);
235 IF L > 1 THEN PRINT SUBSTR(A$(C),1,L) ELSE PRINT SUBSTR(A$(C),1,1)
240 NEXT i
</code>
<p>Here is a example of the output from a run</p>
<samp>
17/01/06. 16.50.11.
PROGRAM JDC
ENTER MESSAGE TO ENCODE/DECODE
? THE CAKE IS A LIE
WILPDN HCAUBKQXEOZVRMGYJSFT
MR YXDZPTLQAJBWVKIECSGFONUH
ACDIOHMVKGTYFPZJS UNBWLXQRE
MGPBLYWIVXHTNOZSFUJKREDQAC
POMQZA TRFBGIWDLVHESJUKNXYC
PWDNIHLQMUTYSXCOFRKJZVEG BA
IOZFSUPGREDBNVTYMAJWQXH CLK
QNTAJULBWZYCPDSR HVMIFGKOXE
TBGQMHWNPZVLXCYJRKUSOEFADI
ROMUVEZHPSDNAYLJQTXWFBG CKI
QFGDAKXYJBOVUPICNTHWZE LRMS
QTFLPIOZCUKYVRDWXJHGNASEMB
BRFTJWUZV HIYQOSLCMEXGDKPNA
FNZPGUQROYVXCBAHTISWDLKJEM
NCIOUJK EXRAYHWFMTVBQPSGZDL
ALKXPVUTZJONEWCHMGSFYRQBDI
OZVRMGYJSFTWILPDN HCAUBKQXE
SRU 0.308 UNTS.
RUN COMPLETE.
</samp>
Try running the program with FURCYBLXIKMBNMDDX.
</pre>
$Id: basic_programs.html,v 1.5 2017/01/07 01:00:12 epl692 Exp $