git @ Cat's Eye Technologies Apple-Befunge / 6e94425
Initial import of Apple Befunge files. catseye 14 years ago
5 changed file(s) with 660 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
Binary diff not shown
0 <html>
1
2 <center><h1>Apple Befunge</h1>
3
4 <p> <a href="http://www.catseye.mb.ca/vintage/apple/befunge.html">Go&nbsp;to&nbsp;the&nbsp;Apple&nbsp;Befunge&nbsp;Web&nbsp;Site</a>
5 | <a href="http://www.catseye.mb.ca/vintage/apple/apple-befunge-dsk-1.zip">Download&nbsp;the&nbsp;Apple&nbsp;Befunge&nbsp;Disk&nbsp;Image&nbsp;1.0</a>
6 | <a href="http://geta.life.uiuc.edu/~badger/apple2.html">Obtain&nbsp;an&nbsp;Apple&nbsp;][+&nbsp;Emulator</a>
7 | <a href="http://www.catseye.mb.ca/esoteric/befunge/src/">Go&nbsp;Insane</a>
8
9 </center>
10 <hr>
11
12 <p>Apple Befunge is a retrolanguage for the Apple ][+
13 based mainly on <a href="http://www.catseye.mb.ca/esoteric/befunge/">Befunge-93</a>.
14
15 <h3>Differences</h3>
16
17 <p>The Apple ][+ has no lowercase characters. In Apple
18 Befunge, G, P and V do what g, p, and v do in Befunge-93.
19
20 <p>The Apple ][+ has no ` (backtick) symbol. Instead the
21 ' (apostrophe) symbol is used (it's undefined in Befunge-93.)
22
23 <p>The Apple ][+ has no ~ (tilde) symbol. Instead the
24 = (equals sign) symbol is used (it's undefined in Befunge-93.)
25
26 <p>The Apple ][+ has no | (vertical bar) symbol. Instead the
27 letter I is used (it's undefined in Befunge-93.)
28
29 <p>The Apple ][+'s screen is only 40x24, not 80x25, and until
30 a scrolling version of the Apple Befunge debugger is made,
31 screen size limits program size.
32
33 <h3>Improvements</h3>
34
35 <p>Letters A through F represent values 10 through 15 respectively.
36
37 <p>The ; (semicolon) symbol begins and ends "ignoremode".
38
39 <p>If the <i>x</i> argument to G is negative, the result is PEEK(<i>y</i>).
40
41 If the <i>x</i> argument to P is negative, the result is POKE <i>y</i>, <i>d</i>.
42
43 The ] instruction pops an argument <i>a</i> off the stack; the result is CALL <i>a</i>.
44
45 These three instructions allow a direct interface to the rest of
46 the Apple ][+ system.
47
48 <h3>Implementations</h3>
49
50 <p>On the ESDOS-][-formatted
51 <a href="http://www.catseye.mb.ca/vintage/apple/apple-befunge-dsk-1.zip">Apple&nbsp;Befunge&nbsp;Disk&nbsp;Image&nbsp;1.0</a>
52 there is:
53
54 <ul>
55 <li> a full visual debugger/editor for Apple Befunge
56 called APPLE BEFUNGE EDITOR
57 <li> a less obtrustive but unfinished interpreter called APPLE BEFUNGE RUNNER
58 <li> and a handful
59 of Befunge programs which have been converted to Apple Befunge format.
60 </ul>
61
62 <p>Also in the ZIP archive which contains the disk image, are the source
63 codes (ASCII text) for APPLE BEFUNGE EDITOR and the 'diffs' for APPLE BEFUNGE RUNNER,
64 along with a copy of this HTML page.
65
66 <h3>Licsensing</h3>
67
68 <p>All Apple Befunge material is freely redistributable. If you
69 make a derivative work based on Apple Befunge or any of its tools,
70 all I ask is that you contact me so that we can link web pages
71 (or I can host your stuff on my site if you don't have a web page.)
72
73 <h3>Known Bugs</h3>
74
75 <p>In APPLE BEFUNGE EDITOR:
76
77 <p>The coordinate (39,23) can only contain blank space (not yet put
78 in code to draw instructions in that part of the screen, without
79 scrolling it. I know how to do it, I just haven't bothered.)
80
81 <p>Subtle bug in either % (modulo) or ' (greater than) or
82 <tt>hex.bf</tt> - not entirely sure which.
83
84 <h3>To Do List</h3>
85
86 <p>Finish the APPLE BEFUNGE RUNNER program
87 to execute an Apple Befunge program
88 non-visually, with more normal I/O for .,=&.
89 It needs to ask the user for a filename when run
90 (no command-line arguments in ESDOS ][.)
91
92 <p>A good reorganization of APPLE BEFUNGE EDITOR is in order. The push and pop subroutines
93 should probably be as near the beginning of the program as possible. Should hold more
94 constant values in variables. All the editor-dependent stuff should be in the same place
95 so it can be wiped out more easily by APPLE BEFUNGE RUNNER.
96
97 <p>Put a great many more example Apple Befunge programs on the disk image.
98
99 <p>Write an APPLE BEFUNGE TO APPLESOFT COMPILER. Will probably need
100 a deeper understanding of the tokenizing mechanism and the filesystem
101 to accomplish this, since I'll need to write type "A" files.
102
103 <p><hr>
104 <p><i>Last Updated Jul 3 &copy;2000 <a href="http://www.catseye.mb.ca/">Cat's Eye Technologies</a>.</i>
105 </html>
0 NEW
1
2 1 REM APPLE BEFUNGE EDITOR V1.0
3 2 REM ----- ------- ------ ----
4
5 6 REM BEFUNGE-93-ESQUE INTERPRETER
6 7 REM WRITTEN IN APPLESOFT BASIC!
7 8 REM (C)2000 CAT'S EYE TECHNOLOGIES
8 9 REM FREELY REDISTRIBUTABLE
9
10 11 REM V1.0 JUL 3 2000 CHRIS PRESSEY
11
12 99 HOME
13
14 100 REM INITIALISE
15
16 110 DIM PG%(79,24)
17 120 DIM ST%(256)
18 130 X%=0:Y%=0:DX%=1:DY%=0:QM%=0:IM%=0:RM%=0
19 140 I%=0:J%=0:IR%=0:SP%=0:D%=0:E%=0:F%=0
20 142 OS$="":D$=CHR$(4)
21
22 150 GOSUB 7140:REM NEW PLAYFIELD
23
24 190 GOTO 710:REM EDIT
25
26 200 REM RUN-PROGRAM LOOP
27
28 210 VTAB Y%+1:HTAB X%+1
29 220 IR%=PG%(X%,Y%)
30 225 IF QM%=1 THEN GOSUB 910:GOTO 240
31 230 IF IM%=0 OR IR%=59 THEN GOSUB 400:REM EXECUTE
32 235 IF RM%=0 THEN GOTO 720:REM END
33 240 GOSUB 250:REM MOVE THREAD
34 245 GOTO 210
35
36 249 REM ADVANCE THREAD
37
38 250 X%=X%+DX%:Y%=Y%+DY%
39 260 IF X%>39 THEN X%=X%-40
40 265 IF X%<0 THEN X%=X%+40
41 270 IF Y%>23 THEN Y%=Y%-24
42 275 IF Y%<0 THEN Y%=Y%+24
43 280 RETURN
44
45 300 REM DISPLAY PAGE
46
47 310 J%=0
48 320 VTAB J%+1: HTAB 1
49 330 I%=0
50 340 IF I%=39 AND J%=23 GOTO 360
51 350 PRINT CHR$(PG%(I%,J%));
52 360 I%=I%+1:IF I%<40 THEN GOTO 340
53 370 J%=J%+1:IF J%<24 THEN GOTO 320
54 390 RETURN
55
56 400 REM EXECUTE IR%
57
58 410 IF IR%<33 THEN RETURN
59 412 IF IR%=86 THEN GOTO 3410:REM V
60 413 IF IR%=73 THEN GOTO 3010:REM I
61 414 IF IR%=71 THEN GOTO 3610:REM G
62 415 IF IR%=80 THEN GOTO 3710:REM P
63 416 IF IR%>=65 AND IR%<=70 THEN GOTO 2260
64 418 IF IR%>=92 THEN ON IR%-91 GOTO 3610,3110,3210,3310
65 420 IF IR%>=58 THEN ON IR%-57 GOTO 2310,2410,2510,2610,2710,2810,2910
66 430 IF IR%>=48 AND IR%<=57 THEN GOTO 2210
67 440 IF IR%>41 THEN ON IR%-41 GOTO 1610,1710,1810,1910,2010,2110
68 450 ON IR%-32 GOTO 1010,1110,1210,1310,1410,1510,3510
69 460 RETURN
70
71 500 REM PUSH D% ONTO STACK
72
73 510 ST%(SP%)=D%:SP%=SP%+1
74 590 RETURN
75
76 600 REM POP D% FROM STACK
77
78 610 IF SP%=0 THEN GOTO 650
79 620 SP%=SP%-1:D%=ST%(SP%)
80 630 RETURN
81 650 D%=0
82 690 RETURN
83
84 700 REM EDIT-PROGRAM LOOP
85 710 GOSUB 8010:REM DISPLAY PAGE
86 720 VTAB Y%+1:HTAB X%+1
87 722 IR%=PG%(X%,Y%)
88 730 GET A$:A%=ASC(A$)
89 733 IF A%=23 THEN GOSUB 6210:GOTO 720
90 734 IF A%=15 THEN GOSUB 6010:GOTO 720
91 735 IF A%=1 THEN GOSUB 8010:GOTO 720
92 736 IF A%=14 THEN GOSUB 7140:GOSUB 300:GOTO 720
93 737 IF A%=5 THEN GOSUB 7010:GOTO 720
94 738 IF A%=12 THEN DX%=1:DY%=0:X%=0:Y%=0:GOTO 720
95 740 IF A%=7 THEN RM%=1:GOTO 200
96 741 IF A%=9 THEN GOSUB 810
97 742 IF A%=96 THEN A%=39:REM BACKTICK TO APOSTROPHE
98 744 IF A%=126 THEN A%=61:REM TILDE TO EQUALS SIGN
99 746 IF A%=124 THEN A%=73:REM VERTICAL BAR TO LETTER I
100 750 IF A%=20 THEN GOSUB 7110:GOTO 720
101 752 IF A%=18 THEN GOSUB 300:GOTO 720
102 760 IF A%=11 THEN DX%= 0:DY%=-1:GOSUB 250
103 765 IF A%=8 THEN DX%=-1:DY%= 0:GOSUB 250
104 770 IF A%=21 THEN DX%= 1:DY%= 0:GOSUB 250
105 775 IF A%=10 THEN DX%= 0:DY%= 1:GOSUB 250
106 777 IF A%=13 THEN DX%= 1:DY%= 0:X%=0:Y%=Y%+1:GOTO 720
107 785 IF A%=27 THEN HOME:END:GOSUB 300:GOTO 720:REM SHELL TO BASIC
108 786 IF X%=39 AND Y%=23 THEN GOSUB 250:GOTO 720
109 787 IF A%>127 THEN A%=A%-128:GOTO 787
110 788 IF A%>95 THEN A%=A%-32:GOTO 788
111 790 IF A%>31 THEN PG%(X%,Y%)=A%:PRINT CHR$(A%);:GOSUB 250
112 795 GOTO 720
113
114 800 REM HELP
115 810 VTAB 5:INVERSE
116 813 HTAB 5:PRINT " CTRL+I - SHOW THIS HELP "
117 814 HTAB 5:PRINT "------------------------------"
118 815 HTAB 5:PRINT " ARROW KEYS - MOVE CURSOR/PC "
119 816 HTAB 5:PRINT " CTRL+L - HOME CURSOR "
120 817 HTAB 5:PRINT " CTRL+N - NEW:CLEAR PROG "
121 818 HTAB 5:PRINT " CTRL+O - OPEN:LOAD PROG "
122 819 HTAB 5:PRINT " CTRL+W - WRITE:SAVE PRG "
123 820 HTAB 5:PRINT " CTRL+G - GO:RUN PROGRAM "
124 821 HTAB 5:PRINT " CTRL+T - SINGLE STEP PC "
125 822 HTAB 5:PRINT " CTRL+E - EXAMINE STACK "
126 823 HTAB 5:PRINT " CTRL+R - REDRAW SCREEN "
127 824 HTAB 5:PRINT " CTRL+A - SHOW ABOUT BOX "
128 825 HTAB 5:PRINT " CTRL+C - STOP PROG RUN "
129 826 HTAB 5:PRINT " ESC (,CONT) - SHELL TO BASIC "
130 830 HTAB 5:PRINT "------------------------------"
131 840 HTAB 5:PRINT " PRESS ANY KEY TO RESUME EDIT "
132 880 NORMAL
133 890 GET WT$:GOSUB 300
134 895 RETURN
135
136 900 REM QUOTEMODE
137 910 IF IR%=34 THEN QM%=0:GOTO 990
138 920 D%=IR%
139 930 GOSUB 500
140 990 RETURN
141
142 1000 REM ! BOOLEAN NOT
143 1010 GOSUB 600
144 1020 IF D%=0 THEN D%=1:GOTO 1040
145 1030 D%=0
146 1040 GOSUB 500
147 1090 RETURN
148
149 1100 REM " TOGGLE QUOTEMODE
150 1110 IF QM%=0 THEN QM%=1:GOTO 1180
151 1120 QM%=0
152 1180 REM
153 1190 RETURN
154
155 1200 REM # TRAMPOLINE
156 1210 X%=X%+DX%
157 1220 Y%=Y%+DY%
158 1290 RETURN
159
160 1300 REM $ POP
161 1310 GOSUB 600
162 1390 RETURN
163
164 1400 REM % MODULO (SLOW!)
165 1410 GOSUB 600
166 1420 E%=D%
167 1430 GOSUB 600
168 1440 IF D%>E% THEN D%=D%-E%:GOTO 1440
169 1450 GOSUB 500
170 1490 RETURN
171
172 1500 REM & INPUT INTEGER
173 1510 HTAB 1:VTAB 23
174 1520 INVERSE:PRINT OS$;:NORMAL
175 1530 INPUT "";WT$
176 1535 D%=VAL(WT$)
177 1537 IF WT$=CHR$(3) THEN RM%=0
178 1538 J%=22:GOSUB 320:REM TRICKY BASTARD!
179 1540 GOSUB 500
180 1550 OS$=""
181 1590 RETURN
182
183 1600 REM * MULTIPLY INTEGERS
184 1610 GOSUB 600
185 1620 E%=D%
186 1630 GOSUB 600
187 1640 D%=D%*E%
188 1650 GOSUB 500
189 1690 RETURN
190
191 1700 REM + ADD INTEGERS
192 1710 GOSUB 600
193 1720 E%=D%
194 1730 GOSUB 600
195 1740 D%=D%+E%
196 1750 GOSUB 500
197 1790 RETURN
198
199 1800 REM , OUTPUT CHARACTER
200 1810 GOSUB 600
201 1820 IF D%<>10 THEN GOTO 1880
202 1825 HTAB 1:VTAB 24
203 1830 INVERSE:PRINT OS$;" (EOL)";:NORMAL
204 1840 GET WT$:IF WT$=CHR$(3) THEN RM%=0
205 1850 OS$=""
206 1858 J%=23:GOSUB 320:REM TRICKY BASTARD!
207 1860 RETURN
208 1880 OS$=OS$+CHR$(D%)
209 1882 IF LEN(OS$)>30 THEN GOTO 1825
210 1890 RETURN
211
212 1900 REM - SUBTRACT INTEGERS
213 1910 GOSUB 600
214 1920 E%=D%
215 1930 GOSUB 600
216 1940 D%=D%-E%
217 1950 GOSUB 500
218 1990 RETURN
219
220 2000 REM . OUTPUT INTEGER
221 2010 GOSUB 600
222 2020 OS$=OS$+STR$(D%)+" "
223 2030 IF LEN(OS$)>30 THEN GOTO 1825:REM WAAHH!
224 2090 RETURN
225
226 2100 REM / DIVIDE INTEGERS
227 2110 GOSUB 600
228 2120 E%=D%
229 2130 GOSUB 600
230 2140 IF E%=0 GOTO 2170
231 2150 D%=D%/E%
232 2160 GOSUB 500
233 2165 RETURN
234 2170 PRINT "WHAT DO YOU WANT ";D%;"/";E%;" TO BE";
235 2180 INPUT D%
236 2185 GOSUB 500
237 2190 RETURN
238
239 2200 REM 0-9 PUSH DIGIT
240 2210 D%=IR%-48
241 2220 GOSUB 500
242 2240 RETURN
243
244 2250 REM A-F PUSH HEX DIGIT
245 2260 D%=IR%-55
246 2270 GOSUB 500
247 2290 RETURN
248
249 2300 REM COLON DUP VALUE
250 2310 GOSUB 600:GOSUB 500:GOSUB 500
251 2390 RETURN
252
253 2400 REM ; IGNORE MODE
254 2410 IF IM%=0 THEN IM%=1:GOTO 2490
255 2420 IM%=0
256 2490 RETURN
257
258 2500 REM < LEFT
259 2510 DX%=-1:DY%=0
260 2590 RETURN
261
262 2600 REM ~ INPUT CHARACTER
263 2601 REM USES = ON APPLE ][+
264 2610 HTAB 1:VTAB 24
265 2615 INVERSE:PRINT OS$;:NORMAL
266 2620 GET WT$
267 2626 J%=23:GOSUB 320:REM TRICKY BASTARD!
268 2628 IF WT$=CHR$(3) THEN RM%=0
269 2630 D%=ASC(WT$)
270 2640 GOSUB 500
271 2690 RETURN
272
273 2700 REM > RIGHT
274 2710 DX%=1:DY%=0
275 2790 RETURN
276
277 2800 REM ? RANDOM
278 2810 QD%=RND(1)*4+1
279 2815 ON QD% GOTO 2820,2830,2840,2850
280 2820 DX%= 1:DY%= 0:RETURN
281 2830 DX%=-1:DY%= 0:RETURN
282 2840 DX%= 0:DY%= 1:RETURN
283 2850 DX%= 0:DY%=-1:RETURN
284 2890 RETURN
285
286 2900 REM @ END PROGRAM
287 2910 HTAB 1:VTAB 24
288 2920 INVERSE:PRINT OS$;" (END)";:NORMAL
289 2930 GET WT$
290 2935 J%=23:GOSUB 320:REM TRICKY BASTARD!
291 2940 RM%=0:OS$=""
292 2990 RETURN
293
294 3000 REM | UP-DOWN DECISION
295 3001 REM USES I ON APPLE ][+
296 3010 GOSUB 600
297 3015 DX%=0
298 3020 IF D%<>0 THEN DY%=-1:GOTO 3090
299 3030 DY%=1
300 3090 RETURN
301
302 3100 REM ] CALL MACHINE LANGUAGE
303 3110 GOSUB 600
304 3111 CALL D%
305 3190 RETURN
306
307 3200 REM ^ UP
308 3210 DX%=0:DY%=-1
309 3290 RETURN
310
311 3300 REM _ LEFT-RIGHT DECISION
312 3310 GOSUB 600
313 3315 DY%=0
314 3320 IF D%<>0 THEN DX%=-1:GOTO 3390
315 3330 DX%=1
316 3390 RETURN
317
318 3400 REM V DOWN
319 3410 DX%=0:DY%=1
320 3490 RETURN
321
322 3500 REM ` GREATER THAN
323 3501 REM USES ' ON APPLE ][+
324 3510 GOSUB 600
325 3515 E%=D%
326 3520 GOSUB 600
327 3525 IF D%>E% THEN D%=1:GOTO 3530
328 3527 D%=0
329 3530 GOSUB 500
330 3590 RETURN
331
332 3600 REM G GET FROM SPACE
333 3610 GOSUB 600
334 3615 E%=D%
335 3620 GOSUB 600
336 3732 IF D%<0 THEN D%=PEEK(E%):GOTO 3640
337 3630 D%=PG%(D%,E%)
338 3640 GOSUB 500
339 3690 RETURN
340
341 3700 REM P PUT INTO SPACE
342 3710 GOSUB 600
343 3715 E%=D%
344 3720 GOSUB 600
345 3725 F%=D%
346 3730 GOSUB 600
347 3732 IF F%<0 THEN POKE E%,D%:GOTO 3790
348 3740 PG%(F%,E%)=D%
349 3742 HTAB F%+1:VTAB E%+1:INVERSE:PRINT CHR$(D%);:NORMAL
350 3790 RETURN
351
352 3600 REM \ SWAP
353 3610 GOSUB 600
354 3620 E%=D%
355 3630 GOSUB 600
356 3640 F%=D%:D%=E%:GOSUB 500
357 3650 D%=F%:GOSUB 500
358 3690 RETURN
359
360
361 6000 REM LOAD PROGRAM
362 6010 HTAB 1:VTAB 23:INPUT "FILENAME: ";F$
363 6012 GOSUB 7140
364 6015 I=0:J=0
365 6020 PRINT D$;"OPEN";F$
366 6030 PRINT D$;"READ";F$
367
368 6032 A$="": CALL 64879
369 6034 FOR K=512 TO 611: IF PEEK(K)<>141 THEN A$=A$+CHR$(PEEK(K)-128): NEXT
370
371 6040 REM INPUT A$
372 6042 IF LEFT$(A$,14)="END OF PROGRAM" THEN GOTO 6060
373 6045 FOR I=0 TO LEN(A$)-1:PG%(I,J)=ASC(MID$(A$,I+1,1)):NEXT
374 6050 J=J+1:GOTO 6032
375 6060 PRINT D$;"CLOSE";F$
376 6080 GOSUB 300
377 6090 RETURN
378
379 6200 REM SAVE PROGRAM
380 6210 HTAB 1:VTAB 23:INPUT "FILENAME: ";F$
381 6215 I=0
382 6220 PRINT D$;"OPEN";F$
383 6230 PRINT D$;"WRITE";F$
384 6240 REM TODO: OUTPUT PG IN LOOP
385 6242 FOR J=0 TO 24
386 6244 FOR I=0 TO 39:PRINT CHR$(PG%(I,J));:NEXT
387 6246 PRINT: NEXT
388 6248 PRINT "END OF PROGRAM"
389 6250 PRINT D$;"CLOSE";F$
390 6280 GOSUB 300
391 6290 RETURN
392
393 7000 REM EXAMINE STACK
394 7010 HTAB 1:VTAB 20:QQ$=""
395 7012 D%=0
396 7014 IF D%=SP% GOTO 7020
397 7016 QQ$=QQ$+STR$(ST%(D%))+" "
398 7018 D%=D%+1:GOTO 7014
399 7020 INVERSE:PRINT QQ$;:NORMAL
400 7030 GET WT$
401 7035 J%=19:GOSUB 320:REM TRICKY BASTARD!
402 7090 RETURN
403
404 7100 REM SINGLE STEP
405 7110 IF QM%=1 THEN GOSUB 910:GOTO 7114
406 7112 IF IM%=0 OR IR%=59 THEN GOSUB 400:REM EXECUTE
407 7114 GOSUB 250
408 7116 RETURN
409
410 7130 REM NEW PLAYFIELD
411 7140 J%=0
412 7150 I%=0
413 7160 PG%(I%,J%)=32
414 7170 I%=I%+1:IF I%<40 THEN GOTO 7160
415 7180 J%=J%+1:IF J%<24 THEN GOTO 7150
416 7190 RETURN
417
418 8000 REM ABOUT
419 8010 VTAB 7
420 8013 HTAB 4:PRINT " ______________________________"
421 8015 HTAB 4:PRINT "/ \"
422 8016 HTAB 4:PRINT "\ APPLE BEFUNGE V1.0 /"
423 8018 HTAB 4:PRINT "/ ------------------ \"
424 8020 HTAB 4:PRINT "\(C)2000 CAT'S EYE TECHNOLOGIES/"
425 8022 HTAB 4:PRINT "/ HTTP://WWW.CATSEYE.MB.CA/ \"
426 8023 HTAB 4:PRINT "\ FREELY REDISTRIBUTABLE /"
427 8024 HTAB 4:PRINT "/ BASED ON BEFUNGE-93 & -96+ \"
428 8026 HTAB 4:PRINT "\ PRESS CTRL+I FOR HELP INFO /"
429 8028 HTAB 4:PRINT "/ LONG LIVE RETROCOMPUTING :-) \"
430 8030 HTAB 4:PRINT "\______________________________/"
431 8040 HTAB 4:PRINT " PRESS RETURN KEY TO CONTINUE ";
432 8090 GET WT$:GOSUB 300
433 8095 RETURN
434
435 RUN
0 <html><head>
1 <title>Cat's Eye Technologies' Apple ][+ Retrodevelopment Lunacy Server</title>
2 </head>
3 <body bgcolor=#000000 text=#ffffff link=#00dd00 vlink=#008800 alink=#00ff00>
4
5 <center>
6 <img src="/img/3qtrsize.gif">
7 <br><font size=-3><i>Disclaimer: this page does not actually exist. You are currently hallucinating.</i></font>
8 <table><tr><td bgcolor=#ffffff><font color=#000000 size=+4><tt><b><blink>&nbsp;APPLE&nbsp;][+&nbsp;</blink></b></tt></font></td></tr></table>
9 <font size=+2>Retrodevelopment Lunacy Server</font></center>
10
11 <p>Cat's Eye Technologies encourages the engineering of <b>new</b>
12 and <b>innovative</b> software for the Apple ][+ computing platform
13 as an act of <i>retrodevelopment</i>.
14
15 <p>This page was established to provide, free to all websurfers,
16 our contribution to this cheerful insanity.
17
18 <p>Among our efforts include thus far so far we have (<i>sic</i>):
19
20 <ul>
21 <li><a href="befunge.html">Apple Befunge</a>
22 <p>A version of the Befunge language for the Apple ][+,
23 based mainly on Befunge-93. Disk version 1.0 plus
24 source (Applesoft BASIC in text file.)
25 </ul>
26 <hr>
27 <p>&nbsp;
28 <p>&nbsp;
29 <center><table cellpadding=20 border=2><tr><td><pre>
30
31 ] RUN
32 ?BULLSH*T ERROR IN 20
33
34 ] LIST 20
35 20 2 + 2 = 5</pre></td></tr></table>
36 <p>&nbsp;
37 <p>&nbsp;
38 <hr><i>Last Updated Jul 3 &copy;2000 <a href="http://www.catseye.mb.ca/">Cat's Eye Technologies</a>.</i></center>
39 </body>
40 </html>
0 REM THIS SOURCE SHOULD FOLLOW UPLOAD OF 'APPLE BEFUNGE EDITOR'
1 REM AS IT USES IT AS THE BASIS FOR 'APPLE BEFUNGE RUNNER'
2 REM PROGRAMMING IN APPLESOFT IS MORE INTERESTING LIKE THIS :-)
3
4
5 1 REM APPLE BEFUNGE RUNNER V1.0
6 2 REM ----- ------- ------ ----
7
8 99 REM HOME
9 190 RM%=1:REM GOTO 710:REM EDIT
10 210 REM VTAB Y%+1:HTAB X%+1
11
12 310 RETURN: REM J%=0: REM ???DELETE 300-399
13
14 710 RETURN: REM GOSUB 8010:REM DISPLAY PAGE: REM ???DELETE 700-899
15
16 1500 REM & INPUT INTEGER:REM ???DELETE 1500-1599
17 1510 REM
18 1520 REM
19 1530 INPUT "";WT$:D%=VAL(WT$):GOSUB 500:RETURN
20 1535 REM
21 1537 REM
22 1538 REM
23 1540 REM
24 1550 REM
25 1590 RETURN
26
27 1800 REM , OUTPUT CHARACTER:REM ???DELETE 1800-1899
28 1810 GOSUB 600
29 1820 IF D%<>10 THEN GOTO 1880
30 1825 PRINT:RETURN
31 1830 REM
32 1840 REM
33 1850 REM
34 1858 REM
35 1860 RETURN
36 1880 PRINT CHR$(D%);:RETURN
37 1882 REM
38 1890 RETURN
39
40 2000 REM . OUTPUT INTEGER:REM ???DELETE 2000-2099
41 2010 GOSUB 600
42 2020 PRINT STR$(D%);" ";:RETURN
43 2030 REM
44 2090 RETURN
45
46 2600 REM ~ INPUT CHARACTER
47 2601 REM USES = ON APPLE ][+
48 2610 GET WT$:D%=ASC(WT$):GOSUB 500:RETURN
49 2615 REM
50 2620 REM
51 2626 REM
52 2628 REM
53 2630 REM
54 2640 REM
55 2690 RETURN
56
57 2900 REM @ END PROGRAM
58 2910 END:REM
59 2920 REM
60 2930 REM
61 2935 REM
62 2940 REM
63 2990 REM
64
65 3700 REM P PUT INTO SPACE
66 3710 GOSUB 600
67 3715 E%=D%
68 3720 GOSUB 600
69 3725 F%=D%
70 3730 GOSUB 600
71 3732 IF F%<0 THEN POKE E%,D%:GOTO 3790
72 3740 PG%(F%,E%)=D%
73 3742 RETURN:REM HTAB F%+1:VTAB E%+1:INVERSE:PRINT CHR$(D%);:NORMAL
74 3790 RETURN
75
76 REM DELETE 6000-7129