mirror of
https://github.com/catseye/Apple-Befunge.git
synced 2024-06-10 01:29:31 +00:00
Refactor; PD; fix bug when pressing RETURN in last line.
This commit is contained in:
parent
4355c6e39b
commit
38545b988f
|
@ -1,40 +1,40 @@
|
||||||
NEW
|
NEW
|
||||||
|
|
||||||
1 REM APPLE BEFUNGE EDITOR V1.0
|
REM APPLE BEFUNGE EDITOR V1.1
|
||||||
2 REM ----- ------- ------ ----
|
REM ----- ------- ------ ----
|
||||||
|
|
||||||
6 REM BEFUNGE-93-ESQUE INTERPRETER
|
REM BEFUNGE-93-ESQUE INTERPRETER
|
||||||
7 REM WRITTEN IN APPLESOFT BASIC!
|
REM WRITTEN IN APPLESOFT BASIC!
|
||||||
8 REM (C)2000 CAT'S EYE TECHNOLOGIES
|
|
||||||
9 REM FREELY REDISTRIBUTABLE
|
|
||||||
|
|
||||||
11 REM V1.0 JUL 3 2000 CHRIS PRESSEY
|
REM V1.0 JUN 2000 CHRIS PRESSEY
|
||||||
|
REM V1.1 FEB 2012 CHRIS PRESSEY
|
||||||
|
|
||||||
99 HOME
|
REM THIS WORK IS HEREBY ENTERED INTO
|
||||||
|
REM THE PUBLIC DOMAIN
|
||||||
|
|
||||||
100 REM INITIALISE
|
REM THIS LISTING IS INTENDED TO BE
|
||||||
|
REM PASTED INTO YOUR EMULATOR. SO,
|
||||||
|
REM TO SAVE SPACE AND TIME, THESE
|
||||||
|
REM 'REM'S EXIST ONLY IN THIS FILE,
|
||||||
|
REM AND ARE NOT SAVED IN PROGRAM
|
||||||
|
|
||||||
110 DIM PG%(79,24)
|
REM IT IS RECOMMENDED TO RUN YOUR
|
||||||
120 DIM ST%(256)
|
REM EMULATOR AT FULL SPEED, OR THE
|
||||||
130 X%=0:Y%=0:DX%=1:DY%=0:QM%=0:IM%=0:RM%=0
|
REM INTERPRETER WILL BE SOMEWHAT,
|
||||||
140 I%=0:J%=0:IR%=0:SP%=0:D%=0:E%=0:F%=0
|
REM SHALL WE SAY, POKEY
|
||||||
142 OS$="":D$=CHR$(4)
|
|
||||||
|
|
||||||
150 GOSUB 7140:REM NEW PLAYFIELD
|
100 GOSUB 8000: GOTO 720
|
||||||
|
|
||||||
190 GOTO 710:REM EDIT
|
REM RUN-PROGRAM LOOP
|
||||||
|
|
||||||
200 REM RUN-PROGRAM LOOP
|
200 VTAB Y%+1:HTAB X%+1
|
||||||
|
|
||||||
210 VTAB Y%+1:HTAB X%+1
|
|
||||||
220 IR%=PG%(X%,Y%)
|
220 IR%=PG%(X%,Y%)
|
||||||
225 IF QM%=1 THEN GOSUB 910:GOTO 240
|
225 IF QM%=1 THEN GOSUB 910:GOTO 240
|
||||||
230 IF IM%=0 OR IR%=59 THEN GOSUB 400:REM EXECUTE
|
230 IF IM%=0 OR IR%=59 THEN GOSUB 400
|
||||||
235 IF RM%=0 THEN GOTO 720:REM END
|
235 IF RM%=0 THEN 720
|
||||||
240 GOSUB 250:REM MOVE THREAD
|
240 GOSUB 250: GOTO 200
|
||||||
245 GOTO 210
|
|
||||||
|
|
||||||
249 REM ADVANCE THREAD
|
REM ADVANCE IP
|
||||||
|
|
||||||
250 X%=X%+DX%:Y%=Y%+DY%
|
250 X%=X%+DX%:Y%=Y%+DY%
|
||||||
260 IF X%>39 THEN X%=X%-40
|
260 IF X%>39 THEN X%=X%-40
|
||||||
|
@ -43,9 +43,9 @@ NEW
|
||||||
275 IF Y%<0 THEN Y%=Y%+24
|
275 IF Y%<0 THEN Y%=Y%+24
|
||||||
280 RETURN
|
280 RETURN
|
||||||
|
|
||||||
300 REM DISPLAY PAGE
|
REM DISPLAY PAGE
|
||||||
|
|
||||||
310 J%=0
|
300 J%=0
|
||||||
320 VTAB J%+1: HTAB 1
|
320 VTAB J%+1: HTAB 1
|
||||||
330 I%=0
|
330 I%=0
|
||||||
340 IF I%=39 AND J%=23 GOTO 360
|
340 IF I%=39 AND J%=23 GOTO 360
|
||||||
|
@ -54,9 +54,9 @@ NEW
|
||||||
370 J%=J%+1:IF J%<24 THEN GOTO 320
|
370 J%=J%+1:IF J%<24 THEN GOTO 320
|
||||||
390 RETURN
|
390 RETURN
|
||||||
|
|
||||||
400 REM EXECUTE IR%
|
REM EXECUTE IR%
|
||||||
|
|
||||||
410 IF IR%<33 THEN RETURN
|
400 IF IR%<33 THEN RETURN
|
||||||
412 IF IR%=86 THEN GOTO 3410:REM V
|
412 IF IR%=86 THEN GOTO 3410:REM V
|
||||||
413 IF IR%=73 THEN GOTO 3010:REM I
|
413 IF IR%=73 THEN GOTO 3010:REM I
|
||||||
414 IF IR%=71 THEN GOTO 3610:REM G
|
414 IF IR%=71 THEN GOTO 3610:REM G
|
||||||
|
@ -69,21 +69,20 @@ NEW
|
||||||
450 ON IR%-32 GOTO 1010,1110,1210,1310,1410,1510,3510
|
450 ON IR%-32 GOTO 1010,1110,1210,1310,1410,1510,3510
|
||||||
460 RETURN
|
460 RETURN
|
||||||
|
|
||||||
500 REM PUSH D% ONTO STACK
|
REM PUSH D% ONTO STACK
|
||||||
|
|
||||||
510 ST%(SP%)=D%:SP%=SP%+1
|
500 ST%(SP%)=D%:SP%=SP%+1:RETURN
|
||||||
590 RETURN
|
|
||||||
|
|
||||||
600 REM POP D% FROM STACK
|
REM POP D% FROM STACK
|
||||||
|
|
||||||
610 IF SP%=0 THEN GOTO 650
|
600 IF SP%=0 THEN GOTO 650
|
||||||
620 SP%=SP%-1:D%=ST%(SP%)
|
620 SP%=SP%-1:D%=ST%(SP%)
|
||||||
630 RETURN
|
630 RETURN
|
||||||
650 D%=0
|
650 D%=0
|
||||||
690 RETURN
|
690 RETURN
|
||||||
|
|
||||||
700 REM EDIT-PROGRAM LOOP
|
REM EDIT-PROGRAM LOOP
|
||||||
710 GOSUB 8010:REM DISPLAY PAGE
|
|
||||||
720 VTAB Y%+1:HTAB X%+1
|
720 VTAB Y%+1:HTAB X%+1
|
||||||
722 IR%=PG%(X%,Y%)
|
722 IR%=PG%(X%,Y%)
|
||||||
730 GET A$:A%=ASC(A$)
|
730 GET A$:A%=ASC(A$)
|
||||||
|
@ -95,74 +94,90 @@ NEW
|
||||||
738 IF A%=12 THEN DX%=1:DY%=0:X%=0:Y%=0:GOTO 720
|
738 IF A%=12 THEN DX%=1:DY%=0:X%=0:Y%=0:GOTO 720
|
||||||
740 IF A%=7 THEN RM%=1:GOTO 200
|
740 IF A%=7 THEN RM%=1:GOTO 200
|
||||||
741 IF A%=9 THEN GOSUB 810
|
741 IF A%=9 THEN GOSUB 810
|
||||||
742 IF A%=96 THEN A%=39:REM BACKTICK TO APOSTROPHE
|
|
||||||
744 IF A%=126 THEN A%=61:REM TILDE TO EQUALS SIGN
|
REM BACKTICK BECOMES APOSTROPHE
|
||||||
746 IF A%=124 THEN A%=73:REM VERTICAL BAR TO LETTER I
|
REM TILDE BECOMES EQUALS SIGN
|
||||||
|
REM VERTICAL BAR BECOMES LETTER I
|
||||||
|
|
||||||
|
742 IF A%=96 THEN A%=39
|
||||||
|
744 IF A%=126 THEN A%=61
|
||||||
|
746 IF A%=124 THEN A%=73
|
||||||
750 IF A%=20 THEN GOSUB 7110:GOTO 720
|
750 IF A%=20 THEN GOSUB 7110:GOTO 720
|
||||||
752 IF A%=18 THEN GOSUB 300:GOTO 720
|
752 IF A%=18 THEN GOSUB 300:GOTO 720
|
||||||
760 IF A%=11 THEN DX%= 0:DY%=-1:GOSUB 250
|
760 IF A%=11 THEN DX%= 0:DY%=-1:GOSUB 250
|
||||||
765 IF A%=8 THEN DX%=-1:DY%= 0:GOSUB 250
|
765 IF A%=8 THEN DX%=-1:DY%= 0:GOSUB 250
|
||||||
770 IF A%=21 THEN DX%= 1:DY%= 0:GOSUB 250
|
770 IF A%=21 THEN DX%= 1:DY%= 0:GOSUB 250
|
||||||
775 IF A%=10 THEN DX%= 0:DY%= 1:GOSUB 250
|
775 IF A%=10 THEN DX%= 0:DY%= 1:GOSUB 250
|
||||||
777 IF A%=13 THEN DX%= 1:DY%= 0:X%=0:Y%=Y%+1:GOTO 720
|
777 IF A%=13 THEN DX%= 0:DY%= 1:X%=0:GOSUB 250:DX%=1:DY%=0:GOTO 720
|
||||||
785 IF A%=27 THEN HOME:END:GOSUB 300:GOTO 720:REM SHELL TO BASIC
|
|
||||||
|
REM SHELL TO BASIC
|
||||||
|
|
||||||
|
785 IF A%=27 THEN HOME:END:GOSUB 300:GOTO 720
|
||||||
786 IF X%=39 AND Y%=23 THEN GOSUB 250:GOTO 720
|
786 IF X%=39 AND Y%=23 THEN GOSUB 250:GOTO 720
|
||||||
787 IF A%>127 THEN A%=A%-128:GOTO 787
|
787 IF A%>127 THEN A%=A%-128:GOTO 787
|
||||||
788 IF A%>95 THEN A%=A%-32:GOTO 788
|
788 IF A%>95 THEN A%=A%-32:GOTO 788
|
||||||
790 IF A%>31 THEN PG%(X%,Y%)=A%:PRINT CHR$(A%);:GOSUB 250
|
790 IF A%>31 THEN PG%(X%,Y%)=A%:PRINT CHR$(A%);:GOSUB 250
|
||||||
795 GOTO 720
|
795 GOTO 720
|
||||||
|
|
||||||
800 REM HELP
|
REM HELP
|
||||||
|
|
||||||
810 VTAB 5:INVERSE
|
810 VTAB 5:INVERSE
|
||||||
813 HTAB 5:PRINT " CTRL+I - SHOW THIS HELP "
|
812 HTAB 5:PRINT " CTRL+I - SHOW THIS HELP "
|
||||||
814 HTAB 5:PRINT "------------------------------"
|
814 HTAB 5:PRINT "------------------------------"
|
||||||
815 HTAB 5:PRINT " ARROW KEYS - MOVE CURSOR/PC "
|
816 HTAB 5:PRINT " ARROW KEYS - MOVE CURSOR/IP "
|
||||||
816 HTAB 5:PRINT " CTRL+L - HOME CURSOR "
|
818 HTAB 5:PRINT " (CTRL+J = DOWN, CTRL+K = UP) "
|
||||||
817 HTAB 5:PRINT " CTRL+N - NEW:CLEAR PROG "
|
820 HTAB 5:PRINT " CTRL+L - HOME CURSOR "
|
||||||
818 HTAB 5:PRINT " CTRL+O - OPEN:LOAD PROG "
|
822 HTAB 5:PRINT " CTRL+N - NEW:CLEAR PROG "
|
||||||
819 HTAB 5:PRINT " CTRL+W - WRITE:SAVE PRG "
|
824 HTAB 5:PRINT " CTRL+O - OPEN:LOAD PROG "
|
||||||
820 HTAB 5:PRINT " CTRL+G - GO:RUN PROGRAM "
|
826 HTAB 5:PRINT " CTRL+W - WRITE:SAVE PRG "
|
||||||
821 HTAB 5:PRINT " CTRL+T - SINGLE STEP PC "
|
828 HTAB 5:PRINT " CTRL+G - GO:RUN PROGRAM "
|
||||||
822 HTAB 5:PRINT " CTRL+E - EXAMINE STACK "
|
830 HTAB 5:PRINT " CTRL+T - SINGLE STEP IP "
|
||||||
823 HTAB 5:PRINT " CTRL+R - REDRAW SCREEN "
|
832 HTAB 5:PRINT " CTRL+E - EXAMINE STACK "
|
||||||
824 HTAB 5:PRINT " CTRL+A - SHOW ABOUT BOX "
|
834 HTAB 5:PRINT " CTRL+R - REDRAW SCREEN "
|
||||||
825 HTAB 5:PRINT " CTRL+C - STOP PROG RUN "
|
836 HTAB 5:PRINT " CTRL+A - SHOW ABOUT BOX "
|
||||||
826 HTAB 5:PRINT " ESC (,CONT) - SHELL TO BASIC "
|
838 HTAB 5:PRINT " CTRL+C - STOP PROG RUN "
|
||||||
830 HTAB 5:PRINT "------------------------------"
|
840 HTAB 5:PRINT " ESC (,CONT) - SHELL TO BASIC "
|
||||||
840 HTAB 5:PRINT " PRESS ANY KEY TO RESUME EDIT "
|
842 HTAB 5:PRINT "------------------------------"
|
||||||
|
844 HTAB 5:PRINT " PRESS ANY KEY TO RESUME EDIT "
|
||||||
880 NORMAL
|
880 NORMAL
|
||||||
890 GET WT$:GOSUB 300
|
890 GET WT$:GOSUB 300
|
||||||
895 RETURN
|
895 RETURN
|
||||||
|
|
||||||
900 REM QUOTEMODE
|
REM QUOTEMODE
|
||||||
|
|
||||||
910 IF IR%=34 THEN QM%=0:GOTO 990
|
910 IF IR%=34 THEN QM%=0:GOTO 990
|
||||||
920 D%=IR%
|
920 D%=IR%
|
||||||
930 GOSUB 500
|
930 GOSUB 500
|
||||||
990 RETURN
|
990 RETURN
|
||||||
|
|
||||||
1000 REM ! BOOLEAN NOT
|
REM ! BOOLEAN NOT
|
||||||
|
|
||||||
1010 GOSUB 600
|
1010 GOSUB 600
|
||||||
1020 IF D%=0 THEN D%=1:GOTO 1040
|
1020 IF D%=0 THEN D%=1:GOTO 1040
|
||||||
1030 D%=0
|
1030 D%=0
|
||||||
1040 GOSUB 500
|
1040 GOSUB 500
|
||||||
1090 RETURN
|
1090 RETURN
|
||||||
|
|
||||||
1100 REM " TOGGLE QUOTEMODE
|
REM " TOGGLE QUOTEMODE
|
||||||
|
|
||||||
1110 IF QM%=0 THEN QM%=1:GOTO 1180
|
1110 IF QM%=0 THEN QM%=1:GOTO 1180
|
||||||
1120 QM%=0
|
1120 QM%=0
|
||||||
1180 REM
|
1180 REM
|
||||||
1190 RETURN
|
1190 RETURN
|
||||||
|
|
||||||
1200 REM # TRAMPOLINE
|
REM # TRAMPOLINE
|
||||||
|
|
||||||
1210 X%=X%+DX%
|
1210 X%=X%+DX%
|
||||||
1220 Y%=Y%+DY%
|
1220 Y%=Y%+DY%
|
||||||
1290 RETURN
|
1290 RETURN
|
||||||
|
|
||||||
1300 REM $ POP
|
REM $ POP
|
||||||
|
|
||||||
1310 GOSUB 600
|
1310 GOSUB 600
|
||||||
1390 RETURN
|
1390 RETURN
|
||||||
|
|
||||||
1400 REM % MODULO (SLOW!)
|
REM % MODULO (SLOW!)
|
||||||
|
|
||||||
1410 GOSUB 600
|
1410 GOSUB 600
|
||||||
1420 E%=D%
|
1420 E%=D%
|
||||||
1430 GOSUB 600
|
1430 GOSUB 600
|
||||||
|
@ -170,18 +185,20 @@ NEW
|
||||||
1450 GOSUB 500
|
1450 GOSUB 500
|
||||||
1490 RETURN
|
1490 RETURN
|
||||||
|
|
||||||
1500 REM & INPUT INTEGER
|
REM & INPUT INTEGER
|
||||||
|
|
||||||
1510 HTAB 1:VTAB 23
|
1510 HTAB 1:VTAB 23
|
||||||
1520 INVERSE:PRINT OS$;:NORMAL
|
1520 INVERSE:PRINT OS$;:NORMAL
|
||||||
1530 INPUT "";WT$
|
1530 INPUT "";WT$
|
||||||
1535 D%=VAL(WT$)
|
1535 D%=VAL(WT$)
|
||||||
1537 IF WT$=CHR$(3) THEN RM%=0
|
1537 IF WT$=CHR$(3) THEN RM%=0
|
||||||
1538 J%=22:GOSUB 320:REM TRICKY BASTARD!
|
1538 J%=22:GOSUB 320
|
||||||
1540 GOSUB 500
|
1540 GOSUB 500
|
||||||
1550 OS$=""
|
1550 OS$=""
|
||||||
1590 RETURN
|
1590 RETURN
|
||||||
|
|
||||||
1600 REM * MULTIPLY INTEGERS
|
REM * MULTIPLY INTEGERS
|
||||||
|
|
||||||
1610 GOSUB 600
|
1610 GOSUB 600
|
||||||
1620 E%=D%
|
1620 E%=D%
|
||||||
1630 GOSUB 600
|
1630 GOSUB 600
|
||||||
|
@ -189,7 +206,8 @@ NEW
|
||||||
1650 GOSUB 500
|
1650 GOSUB 500
|
||||||
1690 RETURN
|
1690 RETURN
|
||||||
|
|
||||||
1700 REM + ADD INTEGERS
|
REM + ADD INTEGERS
|
||||||
|
|
||||||
1710 GOSUB 600
|
1710 GOSUB 600
|
||||||
1720 E%=D%
|
1720 E%=D%
|
||||||
1730 GOSUB 600
|
1730 GOSUB 600
|
||||||
|
@ -197,20 +215,22 @@ NEW
|
||||||
1750 GOSUB 500
|
1750 GOSUB 500
|
||||||
1790 RETURN
|
1790 RETURN
|
||||||
|
|
||||||
1800 REM , OUTPUT CHARACTER
|
REM , OUTPUT CHARACTER
|
||||||
|
|
||||||
1810 GOSUB 600
|
1810 GOSUB 600
|
||||||
1820 IF D%<>10 THEN GOTO 1880
|
1820 IF D%<>10 THEN GOTO 1880
|
||||||
1825 HTAB 1:VTAB 24
|
1825 HTAB 1:VTAB 24
|
||||||
1830 INVERSE:PRINT OS$;" (EOL)";:NORMAL
|
1830 INVERSE:PRINT OS$;" (EOL)";:NORMAL
|
||||||
1840 GET WT$:IF WT$=CHR$(3) THEN RM%=0
|
1840 GET WT$:IF WT$=CHR$(3) THEN RM%=0
|
||||||
1850 OS$=""
|
1850 OS$=""
|
||||||
1858 J%=23:GOSUB 320:REM TRICKY BASTARD!
|
1858 J%=23:GOSUB 320
|
||||||
1860 RETURN
|
1860 RETURN
|
||||||
1880 OS$=OS$+CHR$(D%)
|
1880 OS$=OS$+CHR$(D%)
|
||||||
1882 IF LEN(OS$)>30 THEN GOTO 1825
|
1882 IF LEN(OS$)>30 THEN GOTO 1825
|
||||||
1890 RETURN
|
1890 RETURN
|
||||||
|
|
||||||
1900 REM - SUBTRACT INTEGERS
|
REM - SUBTRACT INTEGERS
|
||||||
|
|
||||||
1910 GOSUB 600
|
1910 GOSUB 600
|
||||||
1920 E%=D%
|
1920 E%=D%
|
||||||
1930 GOSUB 600
|
1930 GOSUB 600
|
||||||
|
@ -218,13 +238,15 @@ NEW
|
||||||
1950 GOSUB 500
|
1950 GOSUB 500
|
||||||
1990 RETURN
|
1990 RETURN
|
||||||
|
|
||||||
2000 REM . OUTPUT INTEGER
|
REM . OUTPUT INTEGER
|
||||||
|
|
||||||
2010 GOSUB 600
|
2010 GOSUB 600
|
||||||
2020 OS$=OS$+STR$(D%)+" "
|
2020 OS$=OS$+STR$(D%)+" "
|
||||||
2030 IF LEN(OS$)>30 THEN GOTO 1825:REM WAAHH!
|
2030 IF LEN(OS$)>30 THEN GOTO 1825
|
||||||
2090 RETURN
|
2090 RETURN
|
||||||
|
|
||||||
2100 REM / DIVIDE INTEGERS
|
REM / DIVIDE INTEGERS
|
||||||
|
|
||||||
2110 GOSUB 600
|
2110 GOSUB 600
|
||||||
2120 E%=D%
|
2120 E%=D%
|
||||||
2130 GOSUB 600
|
2130 GOSUB 600
|
||||||
|
@ -237,31 +259,37 @@ NEW
|
||||||
2185 GOSUB 500
|
2185 GOSUB 500
|
||||||
2190 RETURN
|
2190 RETURN
|
||||||
|
|
||||||
2200 REM 0-9 PUSH DIGIT
|
REM 0-9 PUSH DIGIT
|
||||||
|
|
||||||
2210 D%=IR%-48
|
2210 D%=IR%-48
|
||||||
2220 GOSUB 500
|
2220 GOSUB 500
|
||||||
2240 RETURN
|
2240 RETURN
|
||||||
|
|
||||||
2250 REM A-F PUSH HEX DIGIT
|
REM A-F PUSH HEX DIGIT
|
||||||
|
|
||||||
2260 D%=IR%-55
|
2260 D%=IR%-55
|
||||||
2270 GOSUB 500
|
2270 GOSUB 500
|
||||||
2290 RETURN
|
2290 RETURN
|
||||||
|
|
||||||
2300 REM COLON DUP VALUE
|
REM COLON DUP VALUE
|
||||||
|
|
||||||
2310 GOSUB 600:GOSUB 500:GOSUB 500
|
2310 GOSUB 600:GOSUB 500:GOSUB 500
|
||||||
2390 RETURN
|
2390 RETURN
|
||||||
|
|
||||||
2400 REM ; IGNORE MODE
|
REM ; IGNORE MODE
|
||||||
|
|
||||||
2410 IF IM%=0 THEN IM%=1:GOTO 2490
|
2410 IF IM%=0 THEN IM%=1:GOTO 2490
|
||||||
2420 IM%=0
|
2420 IM%=0
|
||||||
2490 RETURN
|
2490 RETURN
|
||||||
|
|
||||||
2500 REM < LEFT
|
REM < LEFT
|
||||||
|
|
||||||
2510 DX%=-1:DY%=0
|
2510 DX%=-1:DY%=0
|
||||||
2590 RETURN
|
2590 RETURN
|
||||||
|
|
||||||
2600 REM ~ INPUT CHARACTER
|
REM ~ INPUT CHARACTER
|
||||||
2601 REM USES = ON APPLE ][+
|
REM USES = ON APPLE ][+
|
||||||
|
|
||||||
2610 HTAB 1:VTAB 24
|
2610 HTAB 1:VTAB 24
|
||||||
2615 INVERSE:PRINT OS$;:NORMAL
|
2615 INVERSE:PRINT OS$;:NORMAL
|
||||||
2620 GET WT$
|
2620 GET WT$
|
||||||
|
@ -271,11 +299,13 @@ NEW
|
||||||
2640 GOSUB 500
|
2640 GOSUB 500
|
||||||
2690 RETURN
|
2690 RETURN
|
||||||
|
|
||||||
2700 REM > RIGHT
|
REM > RIGHT
|
||||||
|
|
||||||
2710 DX%=1:DY%=0
|
2710 DX%=1:DY%=0
|
||||||
2790 RETURN
|
2790 RETURN
|
||||||
|
|
||||||
2800 REM ? RANDOM
|
REM ? RANDOM
|
||||||
|
|
||||||
2810 QD%=RND(1)*4+1
|
2810 QD%=RND(1)*4+1
|
||||||
2815 ON QD% GOTO 2820,2830,2840,2850
|
2815 ON QD% GOTO 2820,2830,2840,2850
|
||||||
2820 DX%= 1:DY%= 0:RETURN
|
2820 DX%= 1:DY%= 0:RETURN
|
||||||
|
@ -284,7 +314,8 @@ NEW
|
||||||
2850 DX%= 0:DY%=-1:RETURN
|
2850 DX%= 0:DY%=-1:RETURN
|
||||||
2890 RETURN
|
2890 RETURN
|
||||||
|
|
||||||
2900 REM @ END PROGRAM
|
REM @ END PROGRAM
|
||||||
|
|
||||||
2910 HTAB 1:VTAB 24
|
2910 HTAB 1:VTAB 24
|
||||||
2920 INVERSE:PRINT OS$;" (END)";:NORMAL
|
2920 INVERSE:PRINT OS$;" (END)";:NORMAL
|
||||||
2930 GET WT$
|
2930 GET WT$
|
||||||
|
@ -292,36 +323,42 @@ NEW
|
||||||
2940 RM%=0:OS$=""
|
2940 RM%=0:OS$=""
|
||||||
2990 RETURN
|
2990 RETURN
|
||||||
|
|
||||||
3000 REM | UP-DOWN DECISION
|
REM | UP-DOWN DECISION
|
||||||
3001 REM USES I ON APPLE ][+
|
REM USES I ON APPLE ][+
|
||||||
|
|
||||||
3010 GOSUB 600
|
3010 GOSUB 600
|
||||||
3015 DX%=0
|
3015 DX%=0
|
||||||
3020 IF D%<>0 THEN DY%=-1:GOTO 3090
|
3020 IF D%<>0 THEN DY%=-1:GOTO 3090
|
||||||
3030 DY%=1
|
3030 DY%=1
|
||||||
3090 RETURN
|
3090 RETURN
|
||||||
|
|
||||||
3100 REM ] CALL MACHINE LANGUAGE
|
REM ] CALL MACHINE LANGUAGE
|
||||||
|
|
||||||
3110 GOSUB 600
|
3110 GOSUB 600
|
||||||
3111 CALL D%
|
3111 CALL D%
|
||||||
3190 RETURN
|
3190 RETURN
|
||||||
|
|
||||||
3200 REM ^ UP
|
REM ^ UP
|
||||||
|
|
||||||
3210 DX%=0:DY%=-1
|
3210 DX%=0:DY%=-1
|
||||||
3290 RETURN
|
3290 RETURN
|
||||||
|
|
||||||
3300 REM _ LEFT-RIGHT DECISION
|
REM _ LEFT-RIGHT DECISION
|
||||||
|
|
||||||
3310 GOSUB 600
|
3310 GOSUB 600
|
||||||
3315 DY%=0
|
3315 DY%=0
|
||||||
3320 IF D%<>0 THEN DX%=-1:GOTO 3390
|
3320 IF D%<>0 THEN DX%=-1:GOTO 3390
|
||||||
3330 DX%=1
|
3330 DX%=1
|
||||||
3390 RETURN
|
3390 RETURN
|
||||||
|
|
||||||
3400 REM V DOWN
|
REM V DOWN
|
||||||
|
|
||||||
3410 DX%=0:DY%=1
|
3410 DX%=0:DY%=1
|
||||||
3490 RETURN
|
3490 RETURN
|
||||||
|
|
||||||
3500 REM ` GREATER THAN
|
REM ` GREATER THAN
|
||||||
3501 REM USES ' ON APPLE ][+
|
REM USES ' ON APPLE ][+
|
||||||
|
|
||||||
3510 GOSUB 600
|
3510 GOSUB 600
|
||||||
3515 E%=D%
|
3515 E%=D%
|
||||||
3520 GOSUB 600
|
3520 GOSUB 600
|
||||||
|
@ -330,7 +367,8 @@ NEW
|
||||||
3530 GOSUB 500
|
3530 GOSUB 500
|
||||||
3590 RETURN
|
3590 RETURN
|
||||||
|
|
||||||
3600 REM G GET FROM SPACE
|
REM G GET FROM SPACE
|
||||||
|
|
||||||
3610 GOSUB 600
|
3610 GOSUB 600
|
||||||
3615 E%=D%
|
3615 E%=D%
|
||||||
3620 GOSUB 600
|
3620 GOSUB 600
|
||||||
|
@ -339,7 +377,8 @@ NEW
|
||||||
3640 GOSUB 500
|
3640 GOSUB 500
|
||||||
3690 RETURN
|
3690 RETURN
|
||||||
|
|
||||||
3700 REM P PUT INTO SPACE
|
REM P PUT INTO SPACE
|
||||||
|
|
||||||
3710 GOSUB 600
|
3710 GOSUB 600
|
||||||
3715 E%=D%
|
3715 E%=D%
|
||||||
3720 GOSUB 600
|
3720 GOSUB 600
|
||||||
|
@ -350,7 +389,8 @@ NEW
|
||||||
3742 HTAB F%+1:VTAB E%+1:INVERSE:PRINT CHR$(D%);:NORMAL
|
3742 HTAB F%+1:VTAB E%+1:INVERSE:PRINT CHR$(D%);:NORMAL
|
||||||
3790 RETURN
|
3790 RETURN
|
||||||
|
|
||||||
3600 REM \ SWAP
|
REM \ SWAP
|
||||||
|
|
||||||
3610 GOSUB 600
|
3610 GOSUB 600
|
||||||
3620 E%=D%
|
3620 E%=D%
|
||||||
3630 GOSUB 600
|
3630 GOSUB 600
|
||||||
|
@ -358,8 +398,10 @@ NEW
|
||||||
3650 D%=F%:GOSUB 500
|
3650 D%=F%:GOSUB 500
|
||||||
3690 RETURN
|
3690 RETURN
|
||||||
|
|
||||||
|
REM ---------------------------------
|
||||||
|
|
||||||
|
REM LOAD PROGRAM
|
||||||
|
|
||||||
6000 REM LOAD PROGRAM
|
|
||||||
6010 HTAB 1:VTAB 23:INPUT "FILENAME: ";F$
|
6010 HTAB 1:VTAB 23:INPUT "FILENAME: ";F$
|
||||||
6012 GOSUB 7140
|
6012 GOSUB 7140
|
||||||
6015 I=0:J=0
|
6015 I=0:J=0
|
||||||
|
@ -368,8 +410,6 @@ NEW
|
||||||
|
|
||||||
6032 A$="": CALL 64879
|
6032 A$="": CALL 64879
|
||||||
6034 FOR K=512 TO 611: IF PEEK(K)<>141 THEN A$=A$+CHR$(PEEK(K)-128): NEXT
|
6034 FOR K=512 TO 611: IF PEEK(K)<>141 THEN A$=A$+CHR$(PEEK(K)-128): NEXT
|
||||||
|
|
||||||
6040 REM INPUT A$
|
|
||||||
6042 IF LEFT$(A$,14)="END OF PROGRAM" THEN GOTO 6060
|
6042 IF LEFT$(A$,14)="END OF PROGRAM" THEN GOTO 6060
|
||||||
6045 FOR I=0 TO LEN(A$)-1:PG%(I,J)=ASC(MID$(A$,I+1,1)):NEXT
|
6045 FOR I=0 TO LEN(A$)-1:PG%(I,J)=ASC(MID$(A$,I+1,1)):NEXT
|
||||||
6050 J=J+1:GOTO 6032
|
6050 J=J+1:GOTO 6032
|
||||||
|
@ -377,12 +417,12 @@ NEW
|
||||||
6080 GOSUB 300
|
6080 GOSUB 300
|
||||||
6090 RETURN
|
6090 RETURN
|
||||||
|
|
||||||
6200 REM SAVE PROGRAM
|
REM SAVE PROGRAM
|
||||||
|
|
||||||
6210 HTAB 1:VTAB 23:INPUT "FILENAME: ";F$
|
6210 HTAB 1:VTAB 23:INPUT "FILENAME: ";F$
|
||||||
6215 I=0
|
6215 I=0
|
||||||
6220 PRINT D$;"OPEN";F$
|
6220 PRINT D$;"OPEN";F$
|
||||||
6230 PRINT D$;"WRITE";F$
|
6230 PRINT D$;"WRITE";F$
|
||||||
6240 REM TODO: OUTPUT PG IN LOOP
|
|
||||||
6242 FOR J=0 TO 24
|
6242 FOR J=0 TO 24
|
||||||
6244 FOR I=0 TO 39:PRINT CHR$(PG%(I,J));:NEXT
|
6244 FOR I=0 TO 39:PRINT CHR$(PG%(I,J));:NEXT
|
||||||
6246 PRINT: NEXT
|
6246 PRINT: NEXT
|
||||||
|
@ -391,7 +431,8 @@ NEW
|
||||||
6280 GOSUB 300
|
6280 GOSUB 300
|
||||||
6290 RETURN
|
6290 RETURN
|
||||||
|
|
||||||
7000 REM EXAMINE STACK
|
REM EXAMINE STACK
|
||||||
|
|
||||||
7010 HTAB 1:VTAB 20:QQ$=""
|
7010 HTAB 1:VTAB 20:QQ$=""
|
||||||
7012 D%=0
|
7012 D%=0
|
||||||
7014 IF D%=SP% GOTO 7020
|
7014 IF D%=SP% GOTO 7020
|
||||||
|
@ -399,16 +440,18 @@ NEW
|
||||||
7018 D%=D%+1:GOTO 7014
|
7018 D%=D%+1:GOTO 7014
|
||||||
7020 INVERSE:PRINT QQ$;:NORMAL
|
7020 INVERSE:PRINT QQ$;:NORMAL
|
||||||
7030 GET WT$
|
7030 GET WT$
|
||||||
7035 J%=19:GOSUB 320:REM TRICKY BASTARD!
|
7035 J%=19:GOSUB 320
|
||||||
7090 RETURN
|
7090 RETURN
|
||||||
|
|
||||||
7100 REM SINGLE STEP
|
REM SINGLE STEP
|
||||||
|
|
||||||
7110 IF QM%=1 THEN GOSUB 910:GOTO 7114
|
7110 IF QM%=1 THEN GOSUB 910:GOTO 7114
|
||||||
7112 IF IM%=0 OR IR%=59 THEN GOSUB 400:REM EXECUTE
|
7112 IF IM%=0 OR IR%=59 THEN GOSUB 400
|
||||||
7114 GOSUB 250
|
7114 GOSUB 250
|
||||||
7116 RETURN
|
7116 RETURN
|
||||||
|
|
||||||
7130 REM NEW PLAYFIELD
|
REM NEW PLAYFIELD
|
||||||
|
|
||||||
7140 J%=0
|
7140 J%=0
|
||||||
7150 I%=0
|
7150 I%=0
|
||||||
7160 PG%(I%,J%)=32
|
7160 PG%(I%,J%)=32
|
||||||
|
@ -416,21 +459,29 @@ NEW
|
||||||
7180 J%=J%+1:IF J%<24 THEN GOTO 7150
|
7180 J%=J%+1:IF J%<24 THEN GOTO 7150
|
||||||
7190 RETURN
|
7190 RETURN
|
||||||
|
|
||||||
8000 REM ABOUT
|
REM INITIALIZE AND SHOW ABOUT BOX
|
||||||
8010 VTAB 7
|
|
||||||
8013 HTAB 4:PRINT " ______________________________"
|
8000 DIM PG%(79,24)
|
||||||
8015 HTAB 4:PRINT "/ \"
|
8010 DIM ST%(256)
|
||||||
8016 HTAB 4:PRINT "\ APPLE BEFUNGE V1.0 /"
|
8020 X%=0:Y%=0:DX%=1:DY%=0:QM%=0:IM%=0:RM%=0
|
||||||
8018 HTAB 4:PRINT "/ ------------------ \"
|
8030 I%=0:J%=0:IR%=0:SP%=0:D%=0:E%=0:F%=0
|
||||||
8020 HTAB 4:PRINT "\(C)2000 CAT'S EYE TECHNOLOGIES/"
|
8040 OS$="":D$=CHR$(4)
|
||||||
8022 HTAB 4:PRINT "/ HTTP://WWW.CATSEYE.MB.CA/ \"
|
8050 HOME:VTAB 7
|
||||||
8023 HTAB 4:PRINT "\ FREELY REDISTRIBUTABLE /"
|
8053 HTAB 4:PRINT " ______________________________"
|
||||||
8024 HTAB 4:PRINT "/ BASED ON BEFUNGE-93 & -96+ \"
|
8055 HTAB 4:PRINT "/ \"
|
||||||
8026 HTAB 4:PRINT "\ PRESS CTRL+I FOR HELP INFO /"
|
8056 HTAB 4:PRINT "\ APPLE BEFUNGE V1.1 /"
|
||||||
8028 HTAB 4:PRINT "/ LONG LIVE RETROCOMPUTING :-) \"
|
8058 HTAB 4:PRINT "/ ------------------ \"
|
||||||
8030 HTAB 4:PRINT "\______________________________/"
|
8060 HTAB 4:PRINT "\ BY CAT'S EYE TECHNOLOGIES /"
|
||||||
8040 HTAB 4:PRINT " PRESS RETURN KEY TO CONTINUE ";
|
8062 HTAB 4:PRINT "/ HTTP://WWW.CATSEYE.TC/ \"
|
||||||
8090 GET WT$:GOSUB 300
|
8063 HTAB 4:PRINT "\ PUBLIC DOMAIN, FEB 2012 /"
|
||||||
8095 RETURN
|
8064 HTAB 4:PRINT "/ BASED ON BEFUNGE-93 & -96+ \"
|
||||||
|
8066 HTAB 4:PRINT "\ PRESS CTRL+I FOR HELP INFO /"
|
||||||
|
8068 HTAB 4:PRINT "/ LONG LIVE RETROCOMPUTING :-) \"
|
||||||
|
8070 HTAB 4:PRINT "\______________________________/"
|
||||||
|
8080 HTAB 4:PRINT " INITIALIZING, PLEASE WAIT... ";
|
||||||
|
8090 GOSUB 7140
|
||||||
|
8100 VTAB 18:HTAB 4:PRINT " PRESS RETURN KEY TO CONTINUE ";
|
||||||
|
8110 GET WT$:GOSUB 300
|
||||||
|
8120 RETURN
|
||||||
|
|
||||||
RUN
|
RUN
|
||||||
|
|
|
@ -2,6 +2,11 @@ REM THIS SOURCE SHOULD FOLLOW UPLOAD OF 'APPLE BEFUNGE EDITOR'
|
||||||
REM AS IT USES IT AS THE BASIS FOR 'APPLE BEFUNGE RUNNER'
|
REM AS IT USES IT AS THE BASIS FOR 'APPLE BEFUNGE RUNNER'
|
||||||
REM PROGRAMMING IN APPLESOFT IS MORE INTERESTING LIKE THIS :-)
|
REM PROGRAMMING IN APPLESOFT IS MORE INTERESTING LIKE THIS :-)
|
||||||
|
|
||||||
|
REM ***
|
||||||
|
REM BEWARE!
|
||||||
|
REM THIS SOURCE HAS NOT BEEN UPDATED YET
|
||||||
|
REM TO MATCH APPLE BEFUNGE EDITOR 1.1
|
||||||
|
REM ***
|
||||||
|
|
||||||
1 REM APPLE BEFUNGE RUNNER V1.0
|
1 REM APPLE BEFUNGE RUNNER V1.0
|
||||||
2 REM ----- ------- ------ ----
|
2 REM ----- ------- ------ ----
|
||||||
|
|
Loading…
Reference in New Issue
Block a user