Hier mal ein einfacher BASIC-Präprozessor, der in Verbindung mit petcat das Entwickeln von Basic-Programmen am PC vereinfachen kann.
Statt Zeilennummern zu verwenden kann man damit Basic auch so schreiben:
Datei "example.bpp":
Code
- goto main
- screen: { !include source "screen.bpp" }
- main: {
- gosub screen.clear
- gosub screen.theme
- ask: print "how do you feel?":print
- print "1) i feel great!"
- print "2) nothing to complain about"
- print "3) not so well..."
- print "4) quit asking"
- input a
- rem check the range...
- if a < 1 goto error
- if a > 4 goto error
- rem give the answer...
- on a gosub answer.good, answer.neutral, answer.bad, done
- rem repeat...
- gosub delay
- goto main
- error: print: print "please enter a number between 1 and 4!":
- gosub delay: gosub screen.clear
- goto ask
- answer: {
- good: print "well that's swell!": goto done
- neutral: print "ok, carry on then...": goto done
- bad: on int(rnd(23)*3)+1 goto one, two, three
- one: print "here, have a cookie!": goto done
- two: print "dont' worry, be happy!": goto done
- three: print "cheer up!": goto done
- done: return
- }
- }
- done: print: print "see ya!": end
- delay: { for i = 0 to 1024: next i: return }
Datei "screen.bpp":
Aufruf:
Erzeugt:
Code
- 0 goto3
- 1 print"{clr}";:return
- 2 poke53280,0:poke53281,0:poke646,5:return
- 3 gosub1
- 4 gosub2
- 5 print"how do you feel?":print
- 6 print"1) i feel great!"
- 7 print"2) nothing to complain about"
- 8 print"3) not so well..."
- 9 print"4) quit asking"
- 10 print
- 11 inputa
- 12 ifa<1goto18
- 13 ifa>4goto18
- 14 print
- 15 onagosub21,22,23,28
- 16 gosub29
- 17 goto3
- 18 print:print"please enter a number between 1 and 4!"
- 19 gosub29:gosub1
- 20 goto5
- 21 print"well that's swell!":goto27
- 22 print"ok, carry on then...":goto27
- 23 onint(rnd(23)*3)+1goto24,25,26
- 24 print"here, have a cookie!":goto27
- 25 print"dont' worry, be happy!":goto27
- 26 print"cheer up!":goto27
- 27 return
- 28 print:print"see ya!":end
- 29 fori=0to1024:nexti:return
Mit dem folgenden Aufruf kann aus dem ursprünglichen Dateien direkt ein PRG erzeugt werden:
Es können übrigens auch Binärdateien direkt als DATA-Zeilen eingebunden werden:
Der Präprozessor ist als einfacher Filter implementiert (Standard Ein/Ausgabe) und in ruby programmiert.
Bei Interesse findet ihr alles weitere auf github