Refactor; PD; fix bug when pressing RETURN in last line.

This commit is contained in:
catseye 2012-02-05 14:40:42 -06:00
parent 4355c6e39b
commit 38545b988f
2 changed files with 175 additions and 119 deletions

View File

@ -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

View File

@ -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 ----- ------- ------ ----