Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
elektronik:u883:mpbasicerw [2021/08/08 13:37] volkerpelektronik:u883:mpbasicerw [2022/08/04 06:39] (aktuell) – ↷ Links angepasst, weil Seiten im Wiki verschoben wurden volkerp
Zeile 2: Zeile 2:
  
 MPBASIC kann um neue Prozeduren/Funktionen erweitert werden.  MPBASIC kann um neue Prozeduren/Funktionen erweitert werden. 
-s. [[elektronik:u883:mpbasic|]], Prozedurtabelle.+s. [[elektronik:u883:mpbasic|]], Prozedurtabelle. 2021 habe ich mich mit dieser Thematik beschäftigt (-> [[tiny:software:baserw40|Tiny, BASIC-Erweiterung]]).  
 + 
 +Erstaunlicherweise sind in der Literatur jedoch keine Beispiele zu finden. Auch Informationen, welche Register nutzbar sind, fehlen. Teilweise stehen auch falsche oder fehlerhafte Angaben in der Literatur.
  
 Hat die Funktion nur einen Eingabeparameter, wird dieser in RR4 übergeben.\\ Hat die Funktion nur einen Eingabeparameter, wird dieser in RR4 übergeben.\\
Zeile 59: Zeile 61:
  
 **Beispiel2**: mehr Parameter **Beispiel2**: mehr Parameter
 +
 +Drei Ein- und drei Ausgabeparameter. Die Eingabeparameter werden den Ausgabeparametern zugewiesen (3faches LET).
 +
 +<code>
 +     109/    801F :                     ;-----------------------------------------------------------------------------
 +     110/    801F :                     ; Beispiel 3 Ein- und Ausgabeparameter PROC [Y1,Y2,Y3] = para [X1,X2,X3]
 +     111/    801F :                     ; in  X1, X2 auf Stack, RR4 = X3 
 +     112/    801F :                     ; out Y1, Y2 auf Stack, RR2 = Y3 
 +     113/    801F :                     ; SP returnadr. 
 +     114/    801F :                     ; SP+2 Parameter X2
 +     115/    801F :                     ; SP+4 Parameter X1
 +     116/    801F :                     ; SP+6 (intern f. interpreter)
 +     117/    801F :                     ; SP+8 Platz f. Ergebnisvariable Y1
 +     118/    801F :                     ; SP+10 Platz f. Ergebnisvariable Y2
 +     119/    801F :                     ; Beim Ende muss der SP auf (intern f. interpreter) zeigen
 +     121/    801F :                     ;-----------------------------------------------------------------------------
 +     122/    801F :                     
 +     123/    801F : 50 E2               f_let3: pop R2 ; RR2 Rückkehradresse zum Interpreter
 +     124/    8021 : 50 E3                pop R3
 +     125/    8023 : 50 E6                pop R6 ; RR6 Adresse von X2
 +     126/    8025 : 50 E7                pop R7
 +     127/    8027 : 50 E8                pop R8 ; RR8 Adresse von X1
 +     128/    8029 : 50 E9                pop R9
 +     129/    802B :                      ;...
 +     130/    802B : A8 FE                ld R10,gpr ; stack 
 +     131/    802D : B8 FF                ld R11,gpr+1
 +     132/    802F : 70 E3                push R3 ; Ret-Adr. wieder auf Stack
 +     133/    8031 : 70 E2                push R2
 +     134/    8033 : A0 EA                incw RR10 ; (intern) übergehen
 +     135/    8035 : A0 EA                incw RR10
 +     136/    8037 : 92 8A                lde @RR10,R8 ; Y1 := X1
 +     137/    8039 : A0 EA                incw RR10
 +     138/    803B : 92 9A                lde @RR10,R9
 +     139/    803D : A0 EA                incw RR10
 +     140/    803F : 92 6A                lde @RR10,R6 ; Y2 := X2
 +     141/    8041 : A0 EA                incw RR10
 +     142/    8043 : 92 7A                lde @RR10,R7
 +     143/    8045 : 28 E4                ld R2,R4 ; Y3 := X3
 +     144/    8047 : 38 E5                ld R3,R5
 +     145/    8049 : AF                  ret
 +     1</code>
 +
 +Nutzung in BASIC
 +
 +<code>
 +1 PROC SETRR[8,%8000];REM Erweiterung einbinden
 +90 PROC[A,B,C]=LET3[%111,%222,%333]
 + 100 PRINTHEX A,B,C
 +
 +ES4.0:
 +1OSETRR[8,%8000]
 +90O[A,B,C]=LET3[%111,%222,%333]
 + 100HA,B,C
 +9999E
 +</code>
  
 Parameterübergabe s. [[elektronik:u883:mpbasic|]], Übergabe der Parameter. Parameterübergabe s. [[elektronik:u883:mpbasic|]], Übergabe der Parameter.
  
  • elektronik/u883/mpbasicerw.1628429854.txt.gz
  • Zuletzt geändert: 2021/08/08 13:37
  • von volkerp