With my wife I was discussing the discipline of doing backups, in doing so I was thinking of how old my oldest file would be. How many years could I go back in time? I’m not talking about backup retention schemes but about my oldest creation, the oldest modification date. So exploring the crypts of dusty ARJ archives looking at the bits and pieces I stored, I found some old code of mine that was so dusty and old, it made me smile and filled me with a feeling of nostalgia. I wanted to share this code nostalgia with you.
Facts and stats
Last modification date: 18 december 1991 (previous century :-))
My age back then: 11 years
Platform: MS-DOS
Language: Quick Basic
Project: Programming the mastermind game
Status: buggy/but some parts work
The code
Surprised about the ramblings of my 11-year old self, I came to the idea of reviving the code. With some fiddling with the dosbox emulator it was suprisingly easy to make it work again! I put a recording at the end of this post. It’s somewhat magic to see 25 years old code working on current computer.
Useless for sure, it contains a bug concerning the black pins, but it doesn’t matter, I was happy that night 🙂
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 |
GOTO mastermind <span style="color: #e34adc;">mastermind:</span> CLS SCREEN <span style="color: #008c00;">8</span> COLOR <span style="color: #008c00;">0</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> RANDOMIZE TIMER FOR t <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">300</span> <span style="color: #e34adc;">kleur:</span> i <span style="color: #808030;">=</span> RND IF i <span style="color: #808030;"><</span> <span style="color: #008000;">.25</span> THEN kleur <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> ELSE IF i <span style="color: #808030;"><</span> <span style="color: #008000;">.5</span> THEN kleur <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> ELSE IF i <span style="color: #808030;"><</span> <span style="color: #008000;">.75</span> THEN kleur <span style="color: #808030;">=</span> <span style="color: #008c00;">6</span> ELSE kleur <span style="color: #808030;">=</span> <span style="color: #008c00;">9</span> END IF END IF END IF <span style="color: #e34adc;">teken:</span> lr <span style="color: #808030;">=</span> <span style="color: #603000;">INT</span><span style="color: #808030;">(</span>RND <span style="color: #808030;">*</span> <span style="color: #008c00;">600</span><span style="color: #808030;">)</span> bb <span style="color: #808030;">=</span> <span style="color: #603000;">INT</span><span style="color: #808030;">(</span>RND <span style="color: #808030;">*</span> <span style="color: #008c00;">300</span><span style="color: #808030;">)</span> LINE <span style="color: #808030;">(</span>lr<span style="color: #808030;">,</span> bb<span style="color: #808030;">)</span><span style="color: #808030;">-</span><span style="color: #808030;">(</span>lr <span style="color: #808030;">+</span> <span style="color: #008c00;">8</span><span style="color: #808030;">,</span> bb <span style="color: #808030;">+</span> <span style="color: #008c00;">8</span><span style="color: #808030;">)</span><span style="color: #808030;">,</span> kleur<span style="color: #808030;">,</span> BF NEXT t COLOR <span style="color: #008c00;">14</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> LOCATE <span style="color: #008c00;">12</span><span style="color: #808030;">,</span> <span style="color: #008c00;">27</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Welkom in Mastermind</span><span style="color: #800000;">"</span> LOCATE <span style="color: #008c00;">15</span><span style="color: #808030;">,</span> <span style="color: #008c00;">20</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Geprogrammeerd door Marco de Krijger @</span><span style="color: #800000;">"</span> PLAY <span style="color: #800000;">"</span><span style="color: #0000e6;">l8 a< b< c> d> e> f> l4 g </span><span style="color: #800000;">"</span> DO FOR flash <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">400</span> NEXT flash LOCATE <span style="color: #008c00;">22</span><span style="color: #808030;">,</span> <span style="color: #008c00;">30</span> COLOR <span style="color: #008c00;">5</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Druk een toets</span><span style="color: #800000;">"</span> FOR flashing <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">400</span> NEXT flashing LOCATE <span style="color: #008c00;">22</span><span style="color: #808030;">,</span> <span style="color: #008c00;">30</span> COLOR <span style="color: #008c00;">10</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Druk een toets</span><span style="color: #800000;">"</span> LOOP WHILE INKEY$ <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #800000;">"</span> <span style="color: #e34adc;">mastmind:</span> CLS SCREEN <span style="color: #008c00;">9</span> COLOR <span style="color: #008c00;">10</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> LOCATE <span style="color: #008c00;">2</span><span style="color: #808030;">,</span> <span style="color: #008c00;">30</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">M A S T E R M I N D</span><span style="color: #800000;">"</span> LOCATE <span style="color: #008c00;">25</span><span style="color: #808030;">,</span> <span style="color: #008c00;">5</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Druk 'H' voor Help</span><span style="color: #800000;">"</span> COLOR <span style="color: #008c00;">12</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> LOCATE <span style="color: #008c00;">4</span><span style="color: #808030;">,</span> <span style="color: #008c00;">5</span> 'bepalen toevalsgetallen tussen <span style="color: #008c00;">0</span> en <span style="color: #008c00;">9</span> RANDOMIZE TIMER FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> x$<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> MID$<span style="color: #808030;">(</span>STR$<span style="color: #808030;">(</span><span style="color: #603000;">INT</span><span style="color: #808030;">(</span><span style="color: #008c00;">10</span> <span style="color: #808030;">*</span> RND<span style="color: #808030;">)</span><span style="color: #808030;">)</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span><span style="color: #808030;">,</span> <span style="color: #008c00;">1</span><span style="color: #808030;">)</span> NEXT i beurt <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> <span style="color: #e34adc;">l1:</span> nummer <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> beurt$ <span style="color: #808030;">=</span> MID$<span style="color: #808030;">(</span>STR$<span style="color: #808030;">(</span>beurt<span style="color: #808030;">)</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span><span style="color: #808030;">)</span> IF beurt <span style="color: #808030;"><</span><span style="color: #808030;">=</span> <span style="color: #008c00;">9</span> THEN LOCATE <span style="color: #808030;">,</span> <span style="color: #008c00;">5</span> PRINT <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">(</span><span style="color: #800000;">"</span><span style="color: #800080;">;</span> beurt$<span style="color: #800080;">;</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">) </span><span style="color: #800000;">"</span><span style="color: #800080;">;</span> <span style="color: #e34adc;">l2:</span> toets$ <span style="color: #808030;">=</span> INKEY$ IF toets$ <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #800000;">"</span> THEN GOTO l2 IF toets$ <span style="color: #808030;"><</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">0</span><span style="color: #800000;">"</span> OR toets$ <span style="color: #808030;">></span> <span style="color: #800000;">"</span><span style="color: #0000e6;">9</span><span style="color: #800000;">"</span> THEN GOTO l2 poging$<span style="color: #808030;">(</span>nummer<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> toets$ PRINT toets$<span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> IF nummer <span style="color: #808030;"><</span> <span style="color: #008c00;">4</span> THEN nummer <span style="color: #808030;">=</span> nummer <span style="color: #808030;">+</span> <span style="color: #008c00;">1</span> GOTO l2 END IF PRINT <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> zwart <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> wit <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> 'beoordelen <span style="color: #008c00;">1</span> FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> bron<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> doel<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> NEXT i FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> IF poging$<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;"><</span><span style="color: #808030;">></span> x$<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> THEN GOTO nxt1 zwart <span style="color: #808030;">=</span> zwart <span style="color: #808030;">+</span> <span style="color: #008c00;">1</span> doel<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> bron<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> <span style="color: #e34adc;">nxt1:</span> NEXT i 'beoordelen <span style="color: #008c00;">2</span> FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> FOR j <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> IF zwart <span style="color: #808030;">+</span> wit <span style="color: #808030;">=</span> <span style="color: #008c00;">4</span> THEN GOTO nxt2 IF i <span style="color: #808030;">=</span> j THEN GOTO nxt2 IF doel<span style="color: #808030;">(</span>j<span style="color: #808030;">)</span> THEN GOTO nxt2 IF bron<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> THEN GOTO nxt2 IF pogint$<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;"><</span><span style="color: #808030;">></span> x$<span style="color: #808030;">(</span>j<span style="color: #808030;">)</span> THEN GOTO nxt2 wit <span style="color: #808030;">=</span> wit <span style="color: #808030;">+</span> <span style="color: #008c00;">1</span> doel<span style="color: #808030;">(</span>j<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> bron<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span> <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> <span style="color: #e34adc;">nxt2:</span> NEXT j NEXT i 'goed<span style="color: #808030;">/</span>fout<span style="color: #808030;">/</span>einde IF zwart <span style="color: #808030;">=</span> <span style="color: #008c00;">4</span> THEN GOTO klaar '<span style="color: #008c00;">1</span><span style="color: #800080;">:</span> niets goed IF zwart <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> AND wit <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> THEN PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;"> [niets]</span><span style="color: #800000;">"</span> GOTO daarna END IF '<span style="color: #008c00;">2</span><span style="color: #800080;">:</span> alleen wit IF zwart <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> THEN FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO wit PRINT CHR$<span style="color: #808030;">(</span><span style="color: #008c00;">63</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> NEXT i PRINT GOTO daarna END IF '<span style="color: #008c00;">3</span><span style="color: #800080;">:</span> alleen zwart IF wit <span style="color: #808030;">=</span> <span style="color: #008c00;">0</span> THEN FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO zwart PRINT CHR$<span style="color: #808030;">(</span><span style="color: #008c00;">33</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> NEXT i PRINT GOTO daarna END IF '<span style="color: #008c00;">4</span><span style="color: #800080;">:</span> zwart en wit FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO zwart PRINT CHR$<span style="color: #808030;">(</span><span style="color: #008c00;">33</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> NEXT i FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO wit PRINT CHR$<span style="color: #808030;">(</span><span style="color: #008c00;">63</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> NEXT i PRINT <span style="color: #e34adc;">daarna:</span> PRINT IF beurt <span style="color: #808030;"><</span> <span style="color: #008c00;">10</span> THEN LOCATE <span style="color: #808030;">,</span> <span style="color: #008c00;">5</span> beurt <span style="color: #808030;">=</span> beurt <span style="color: #808030;">+</span> <span style="color: #008c00;">1</span> GOTO l1 ELSE LOCATE <span style="color: #808030;">,</span> <span style="color: #008c00;">6</span> COLOR <span style="color: #008c00;">14</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> PRINT <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> PRINT x$<span style="color: #808030;">(</span>i<span style="color: #808030;">)</span><span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> NEXT i PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Is de juiste combinatie.</span><span style="color: #800000;">"</span> GOTO einde4 END IF <span style="color: #e34adc;">klaar:</span> FOR i <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">4</span> PRINT CHR$<span style="color: #808030;">(</span><span style="color: #008c00;">33</span><span style="color: #808030;">)</span><span style="color: #800080;">;</span> <span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800080;">;</span> NEXT i COLOR <span style="color: #008c00;">14</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;"> geraden!</span><span style="color: #800000;">"</span> <span style="color: #e34adc;">einde4:</span> COLOR <span style="color: #008c00;">14</span><span style="color: #808030;">,</span> <span style="color: #008c00;">2</span> LINE <span style="color: #808030;">(</span><span style="color: #008c00;">220</span><span style="color: #808030;">,</span> <span style="color: #008c00;">90</span><span style="color: #808030;">)</span><span style="color: #808030;">-</span><span style="color: #808030;">(</span><span style="color: #008c00;">410</span><span style="color: #808030;">,</span> <span style="color: #008c00;">160</span><span style="color: #808030;">)</span><span style="color: #808030;">,</span> <span style="color: #008c00;">5</span><span style="color: #808030;">,</span> BF LINE <span style="color: #808030;">(</span><span style="color: #008c00;">219</span><span style="color: #808030;">,</span> <span style="color: #008c00;">90</span><span style="color: #808030;">)</span><span style="color: #808030;">-</span><span style="color: #808030;">(</span><span style="color: #008c00;">410</span><span style="color: #808030;">,</span> <span style="color: #008c00;">161</span><span style="color: #808030;">)</span><span style="color: #808030;">,</span> <span style="color: #008c00;">8</span><span style="color: #808030;">,</span> B LINE <span style="color: #808030;">(</span><span style="color: #008c00;">233</span><span style="color: #808030;">,</span> <span style="color: #008c00;">100</span><span style="color: #808030;">)</span><span style="color: #808030;">-</span><span style="color: #808030;">(</span><span style="color: #008c00;">397</span><span style="color: #808030;">,</span> <span style="color: #008c00;">150</span><span style="color: #808030;">)</span><span style="color: #808030;">,</span> <span style="color: #008c00;">9</span><span style="color: #808030;">,</span> BF LINE <span style="color: #808030;">(</span><span style="color: #008c00;">246</span><span style="color: #808030;">,</span> <span style="color: #008c00;">111</span><span style="color: #808030;">)</span><span style="color: #808030;">-</span><span style="color: #808030;">(</span><span style="color: #008c00;">385</span><span style="color: #808030;">,</span> <span style="color: #008c00;">140</span><span style="color: #808030;">)</span><span style="color: #808030;">,</span> <span style="color: #008c00;">12</span><span style="color: #808030;">,</span> B LOCATE <span style="color: #008c00;">9</span><span style="color: #808030;">,</span> <span style="color: #008c00;">32</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Nog een keer j/n?</span><span style="color: #800000;">"</span> LOCATE <span style="color: #008c00;">10</span><span style="color: #808030;">,</span> <span style="color: #008c00;">32</span> PRINT <span style="color: #800000;">"</span> <span style="color: #800000;">"</span> LOCATE <span style="color: #008c00;">10</span><span style="color: #808030;">,</span> <span style="color: #008c00;">40</span> INPUT <span style="color: #800000;">"</span><span style="color: #800000;">"</span><span style="color: #808030;">,</span> keuze$ IF keuze$ <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">n</span><span style="color: #800000;">"</span> THEN GOTO banana END IF IF keuze$ <span style="color: #808030;">=</span> <span style="color: #800000;">"</span><span style="color: #0000e6;">j</span><span style="color: #800000;">"</span> THEN GOTO mastmind ELSE LOCATE <span style="color: #008c00;">10</span><span style="color: #808030;">,</span> <span style="color: #008c00;">32</span> PRINT <span style="color: #800000;">"</span><span style="color: #0000e6;">Ongeldig antwoord</span><span style="color: #800000;">"</span> FOR wacht <span style="color: #808030;">=</span> <span style="color: #008c00;">1</span> TO <span style="color: #008c00;">1500</span> NEXT wacht GOTO einde END IF <span style="color: #008c00;">1000</span> SYSTEM |
And the screen capture: