1 REM Ins{nd av Thomas Andersson <3917> 1985-04-30 18.17.41
100 REM +-----------------------------+
110 REM ! V I R R E !
120 REM ! ========= !
130 REM ! (c) 1980-01-15 Per Lindberg !
135 REM ! *** The mad programmer *** !
140 REM ! Modifierat f|r ABC 806 !
150 REM ! 1985-04-28 Thomas Andersson !
170 REM ! !
180 REM +-----------------------------+
181 ! Programmet {r inte fullst{ndigt konverterat f|r ABC806. Vad jag kan se
182 ! s} ligger OUT:ar kvar i programmet. Dvs s}dana instruktioner som ger
183 ! ljud i ABC80. De verkar dock inte ge n}gon skadlig effekt vad jag kan se.
185 ! Programmet fungerar p} ABC806, ABC802. Man kan dock enkelt {ndra det
186 ! s} att det funkar p} ABC800 C. Ta d} bort bara WIDTH instruktionen.
187 ! Det kommer dock alldrig att fungera p} ABC800 M.
188 ! Bo Kullmar 1985-05-01
189 WIDTH 40. : INTEGER : NO EXTEND
190 ; CHR$(12) RED CUR(10,10) 'F|r hj{lp skriv "?"';
200 DATA " "
210 DATA " hwg} `w5 z{ `w5 z{"
220 DATA " o{% o5 * o5 *"
230 DATA " |~|4 ~} h4 ~} h4"
240 DATA " ??5 j5 j5"
250 DATA " 555 j5 j5"
260 DATA " 555 j5 j5"
270 DATA " 555 j5 j5"
280 DATA " !oo%! ?o *% o? jo%"
290 DATA " jj 5j `&j j5 jj"
300 DATA " jj j j )z ji j""4"
310 DATA " jj z j ""j j`5 j 5"
320 DATA " .*$ . . . .(%"
330 DATA " "
340 DATA " j{0 wu j{0 wu"
350 DATA " j? % j? %"
360 DATA " ~} h4 ~} h4"
370 DATA " j5 j5"
380 DATA " j5 j5"
390 DATA " j5 j5"
400 DATA " j5 j5"
410 DATA " oo *% o? j/5"
420 DATA " jj j""d j 5"
430 DATA " 6j hk j8! j j"
440 DATA " 5j uj j"" j j0"
450 DATA " -*$ *$ *$ *$"
460 DATA " "
470 DATA " hwg} `<0. THEN R=0 : GOTO 1530
1490 A1=INSTR(1,"ADWX",A$) : IF A1 IF RND>.3 GOTO 1540
1500 A$=MID$("ADXW12345 ",1+9*RND,1)
1510 GOTO 1540
1520 REM ** NORMAL ! **
1530 ; CYA CUR(0,0); : GET A$ : IF ASCII(A$)>63 A$=CHR$(ASCII(A$) AND 95)
1540 A=1+INSTR(1,"$H?RADXWS4 1253",A$)
1550 ON A GOTO 1480,5000,2010,2010,1990,1570,1590,1610,1630,1650,1670,1730,1770,1790,1810,1840
1560 REM +----- LOOP-STYRNING -----+
1570 IF X<4 GOSUB 1940 : GOTO 1480 ELSE IF S=2 GOSUB 1950
1580 X=X-2 : FOR N=1 TO 4 : A=N-N/4*4 : GOSUB 1890 : NEXT N : S=1 : GOTO 1480
1590 IF X>29 GOSUB 1940 : GOTO 1480 ELSE IF S=1 GOSUB 1950
1600 X=X+2 : FOR N=1 TO 4 : A=4+N-N/4*4 : GOSUB 1890 : NEXT N : S=2 : GOTO 1480
1610 IF Y>9 GOTO 1480 ELSE IF S GOSUB 1940
1620 FOR N=1 TO 3 : A=8+N+3*(N=3) : Y=Y-(N=3) : GOSUB 1890 : NEXT N : GOTO 1460
1630 IF Y<1 GOTO 1480 ELSE IF S=0 GOSUB 1970
1640 Y=Y-1 : FOR N=0 TO 2 : A=11+N : GOSUB 1890 : NEXT N : S=-1 : GOTO 1460
1650 IF S GOSUB 1940
1660 GOTO 1480
1670 IF S GOSUB 1940
1680 FOR N=0 TO 3+3*RND : I=1+6*RND : ON I GOTO 1710,1710,1690,1690,1690,1690,1690
1690 I=11+25*RND : FOR M=0 TO (37-I)/5
1700 FOR J=0 TO I : P1=INP(5.) : NEXT J : OUT 6,0 : NEXT M : GOTO 1720
1710 FOR J=0 TO 110 : OUT 6,-1+4*I : NEXT J : OUT 6,0
1720 FOR J=0 TO 200 : NEXT J : NEXT N : GOTO 1480
1730 IF S GOSUB 1940
1740 FOR A=14 TO 16 : IF A=15 A=16
1750 GOSUB 1890 : NEXT A
1760 OUT 6,0 : OUT 6,137 : A=8 : GOSUB 1890 : GOTO 1480
1770 IF S GOSUB 1940
1780 A=17 : GOSUB 1890 : A=8 : GOSUB 1890 : GOTO 1480
1790 IF S GOSUB 1940
1800 A=18 : GOSUB 1890 : A=8 : GOSUB 1890 : GOTO 1480
1810 IF S GOSUB 1940
1820 FOR N=0 TO 1 : A=19 : GOSUB 1890 : A=20 : GOSUB 1890 : NEXT N
1830 A=19 : GOSUB 1890 : A=8 : GOSUB 1890 : GOTO 1480
1840 IF S GOSUB 1940
1850 A=14 : GOSUB 1890 : A=8 : GOSUB 1890 : GOTO 1480
1860 REM +-------------------------+
1870 REM ! END OF MAIN LOOP !
1880 REM +-------------------------+
1890 FOR I=0 TO 13
1900 ; GGRN CUR(Y+I,X) " " G$(A,I) " ";
1910 NEXT I
1920 FOR ].=0. TO 200. : NEXT ].
1930 RETURN
1940 IF S=-1 A=-4*(RND>.5) : GOSUB 1890
1950 IF S A=8 : GOSUB 1890 : S=0
1960 RETURN
1970 IF S=0 A=-4*(RND>.5) : GOSUB 1890
1980 A=13 : GOSUB 1890 : S=-1 : RETURN
1990 IF SYS(5.)>0 THEN 1990 ELSE R=-1 : GOTO 1480
2000 REM +------HJ[LP------------+
2010 ; CHR$(12);
2020 ; GRN CUR(0,0) "V I R R E" TAB(27) "PL-80"
2030 ; GRN CUR(1,0) '=========='
2040 ; YEL CUR(0,22) "The mad programmer";
2050 ; YEL CUR(1,22) "strikes again!!"
2060 ;
2070 ; YEL 'Du kan styra gubben upp}t, ned}t,'
2080 ; YEL '}t v{nster och }t h|ger med knapparna:'
2090 ;
2100 ; RED ' W'
2110 ; RED ' A S D'
2120 ; RED ' X'
2130 ; YEL ' opp'
2140 ; YEL 'Om du vill f} honom att h a,'
2150 ; YEL 'tryck p} . Tangenten "S"'
2160 ; YEL 'st{ller honom rakt fram.'
2170 ; GRN 'Tangenterna "1" t.o.m. "5" inneh}ller' : ; GRN 'n}gra olika |verraskningar.'
2180 ; YEL 'Kommandot "R" f}r honom att sk|ta sig'
2190 ; YEL 'sj{lv, tills du trycker p} n}gon annan'
2200 ; YEL 'tangent.'
2210 ; RED 'Kommandot "$" avslutar'
2220 ; GRN '"?" och "H" ger denna hj{lpsida.'
2230 ;
2240 ; YEL 'Tryck p} , s} forts{tter vi.' CHR$(151,8);
2250 INPUT LINE A$
2260 ; CHR$(12); : FOR I=0 TO 23 : ; YEL CUR(I,0) CHR$(151); : NEXT I
2270 GOTO 1420
5000 WIDTH 80
5010 CHAIN 'NUL:'