MFA Basic - Info's zum Basic Interpreter
- PeterSieg
- Erledigt
-
-
Georg: Wäre schön, wenn die ggf. Dateien mit Patchadressen hier reinhängst - für die "Nachwelt"..
Mach ich gleich
-
detlef: Wenn Du ein paar davon übrig hast, wäre ich interessiert...
Ich muss erst mal schauen, ob die überhaupt funktionieren. Ist ja, wie gesagt, Chinaware. Und noch nicht mal ausgepackt.
-
So, hier ist die Liste mit den Patchadressen.
An jeder der betreffenden Stellen steht im Original ein 0x60 - je nach Wunsch und Ausstattung muss dann dort ein 0x80 (RAM ab 0x8000) oder ein 0xE0 hin (kleine RAM-Karte ab 0xE000).
Im letzten Fall muss allerdings noch etwas geändert werden, damit das BASIC überhaupt RAM hat: Die obere Schranke muss von 0xE000 auf 0xF000 erhöht werden:
Adresse 0x30B2: 0xE0 => 0xF0
Adresse 0x30B7: 0xE0 => 0xF0
-
Update:
PeterSieg hat freundlicherweise die Sache intensiver getestet als ich
Dabei ist ihm prompt noch ein Fehler aufgefallen. Eine weitere Adresse musste noch gepatcht werden. Das habe ich inzwischen erledigt und die kritische Stelle gerade getestet - jetzt geht's.
Hier jetzt die aktualisierte Patchdatei, sowie die beiden ROM-Versionen für 32K/32K (RAM ab 8000) und 8K (RAM ab E000).
Weiterhin ist mir eben ein Tippfehler im letzten Post aufgefallen: Die E000-Version muss an den Adressen 30B1 (statt 30B2) und 30B7 korrigiert werden.
Das ist aber nur relevant, wenn man das Patchen selber machen will. Die hier angehängten Dateien sind schon komplett bearbeitet.
Ich hoffe, dass es das jetzt war, und dass ich nicht wieder neue Fehler eingebaut habe. Weitere Fehlermeldungen aber gerne an mich.
-
Ich suche gerne weitere Basic Programme für den MFA.
Er dürfte eine erweitertes Tiny Basic haben. Plus FOR-NEXT und PEEK+POKE. Kein USR()!
Hier hatte ich schon mal nach Tiny Basic Programmen gesucht - leider ohne wirklichen Erfolg:
Ur Integer Tiny Basic Programe gesucht
Weitere Links:
https://en.wikipedia.org/wiki/Tiny_BASIC
Ich lade die Programme mit minicom -ascii Transfer seriell in MFA. Dabei 150ms Zeichen-Delay und 1100ms Zeilen-Delay.
Fibonacci Folge:
23 Matches:
Code
Alles anzeigen20 PRINT "23 MATCHES" 30 PRINT "CREATIVE COMPUTING, NEW JERSEY" 35 PRINT "MODIFIED BY PHILIP LORD FOR THE APPLE 1" 40 PRINT:PRINT:PRINT 80 PRINT "THIS IS A GAME CALLED '23 MATCHES'." 90 PRINT 100 PRINT "WHEN IT IS YOUR TURN, YOU MAY TAKE ONE," 110 PRINT "TWO, OR THREE MATCHES. THE OBJECT OF " 120 PRINT "THE GAME IS NOT TO TAKE THE LAST MATCH." 130 PRINT 140 PRINT "LET'S FLIP A COIN TO SEE WHO GOES" 150 PRINT "FIRST. IF IT IS HEADS THEN I WIN" 155 PRINT "THE TOSS..." 155 PRINT 160 REM 165 N = 23 170 Q =RND(2) 180 IF Q = 1 THEN GOTO 210 190 PRINT "TAILS! YOU GO FIRST. " 195 PRINT 200 GOTO 300 210 PRINT "HEADS! I WIN! HA! HA!" 220 PRINT "PREPARE TO LOSE, MEATBALL-NOSE!!" 230 PRINT 250 PRINT "I TAKE 2 MATCHES" 260 N = N -2 270 PRINT "THE NUMBER OF MATCHES IS NOW "; N 280 PRINT 290 PRINT "YOUR TURN" 295 PRINT "YOU MAY TAKE 1, 2 OR 3 MATCHES." 300 PRINT "HOW MANY DO YOU WISH TO REMOVE" 310 INPUT K 320 IF K > 3 THEN GOTO 430 330 IF K <= 0 THEN GOTO 430 340 N = N - K 350 PRINT "THERE ARE NOW ";N;" MATCHES REMAINING." 351 IF N = 4 THEN GOTO 381 352 IF N = 3 THEN GOTO 383 353 IF N = 2 THEN GOTO 385 360 IF N <= 1 THEN GOTO 530 370 Z = 4 - K 372 GOTO 390 380 PRINT 381 Z = 3 382 GOTO 390 383 Z = 2 384 GOTO 390 385 Z = 1 390 PRINT "MY TURN! I REMOVE "; Z ;" MATCHES" 400 N = N - Z 410 IF N <= 1 THEN GOTO 470 420 GOTO 270 430 PRINT "VERY FUNNY! DUMMY!" 440 PRINT "DO YOU WANT TO PLAY OR GOOF AROUND?" 450 PRINT "NOW, HOW MANY MATCHES DO YOU WANT" 460 GOTO 310 470 PRINT 480 PRINT "SORRY! YOU TOOK THE LAST MATCH!" 490 PRINT "HA! HA! I BEAT YOU!!!" 500 PRINT 510 PRINT "GOOD BYE LOSER!" 520 GOTO 560 530 PRINT: PRINT "YOU WON, FLOPPY EARS!" 540 PRINT "THINK YOU'RE PRETTY SMART!" 550 PRINT: PRINT "LETS PLAY AGAIN (Y=1/N=0).": INPUT Y 555 IF Y=1 THEN GOTO 130 560 END
Peter
-
-
Nein, leider nicht. Das sind alles Programme, die Variablen mit längeren Namen, floating Point, Strings, Arrays voraussetzen.
Peter
-
Mandelbrot (kleine ASCII Version):
-
Reverse Spiel. Zahlenreihe nach 1-9 sortieren.
Eingabe Postion. Von links=1 bis Position werden Zahlen getauscht.
Code
Alles anzeigen10 REM (C)2019 PETER SIEG 20 PRINT "REVERSE AT POS UNTIL 1..9" 60 FOR I=1 TO 9 70 @(I)=I 80 NEXT I 90 GOSUB 500 100 REM SHUFFLE ROW 110 FOR I=1 TO 30 120 P=RND(8)+1:REM RANDOM 2-9 130 GOSUB 600 140 NEXT I 150 GOSUB 500 200 REM INPUT POS=P AND SHUFFLE AT P 210 INPUT "INPUT POSITION:",P 220 IF P<2 THEN GOTO 210 230 IF P>9 THEN GOTO 210 240 GOSUB 600:REM SHUFFLE AT P 250 GOSUB 500:REM PRINT ROW 260 GOSUB 400:REM CHECK IF ROW IS CORRECT 270 REM IF CORRECT P=0 280 IF P>0 THEN GOTO 200 290 PRINT "CORRECT!" 295 END 400 REM CHECK IF ROW IS CORRECT (1..9) 410 N=0 412 FOR I=1 TO 9 414 IF @(I)=I THEN N=N+1 416 NEXT I 418 IF N=9 THEN P=0 420 RETURN 500 REM PRINT NUMBER ROW 510 FOR I=1 TO 9 520 PRINT @(I); 530 NEXT I 540 PRINT 550 RETURN 600 REM SHUFFLE ROW AT POS P 610 GOSUB 700 612 IF P>3 THEN GOSUB 720 614 IF P>5 THEN GOSUB 730 616 IF P>7 THEN GOSUB 740 618 RETURN 700 REM EXCHANGE @(P) WITH @(1) 710 T=@(P) 712 @(P)=@(1) 714 @(1)=T 716 RETURN 720 REM EXCHANGE @(P-1) WITH @(2) 722 T=@(P-1) 724 @(P-1)=@(2) 726 @(2)=T 728 RETURN 730 REM EXCHANGE @(P-2) WITH @(3) 732 T=@(P-2) 734 @(P-2)=@(3) 736 @(3)=T 738 RETURN 740 REM ECHANGE @(P-3) WITH @(4) 742 T=@(P-3) 744 @(P-3)=@(4) 746 @(4)=T 748 RETURN
Peter
-
Hallo liebe Leute,
ich habe eben auch die gepatchte MFA-Basic Version gebrannt, es funktioniert.
Gibt es für dieses MFA-Basic eigentlich eine Anleitung, Handbuch.
Und gibt dafür ein Source Listing ?
Oder weiß jemand welches Basic das ist ?mfG. Klaus Loy
-
Hab mittlerweweile das Handbuch gefunden.
Beschreibung zu Softwarepaket SP1 BFZ/MFA 7.2, ab ca. Seite 110 ist das Basic beschrieben.mfG. Klaus Loy