Codemix beim FASMW-ZX

ZX-Team Forum
Antworten
funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Codemix beim FASMW-ZX

Beitrag von funkheld » 21.11.2017, 10:49

Hallo, guten Tag.
Ich möchte mit der ZX81-IDE in der 1. Remzeile ein ASM-Programm reinpacken und in den weiteren Zeilen ein normales Basicprogramm, welches dann mittendrin das ASM-Programm in der 1. Remzeile aufruft.

Wie funktioniert das bitte.

Ein kleines Beispiel wäre sehr hilfreich.

Danke.
Gruss

Benutzeravatar
PokeMon
User
Beiträge: 4568
Registriert: 31.08.2011, 23:41

Re: Codemix beim FASMW-ZX

Beitrag von PokeMon » 21.11.2017, 13:01

Auch das ist in dem Online Tutorial recht gut beschrieben und erklärt.
Einfach mal lesen, die Topics sind recht treffend beschrieben und es reicht oft nur einen Topic zu lesen (den passenden). :wink:

Aber hier ein Beispielsprogramm wo man sieht, dass der Code nicht nur in der ersten REM Zeile sitzen muss. Die ZX-IDE ermittelt die Startadressen des Code selbst. Man kann hier entweder eine Zeilennummer angeben (#30# für Zeile 30), dann wird sozusagen direkt nach dem REM Statement gestartet. Oder man kann auch in einen späteren Codeteil einspringen wie label1 mit einfach nur #label1 und so mehrere Einsprungpunkte in einem ASM Programm nutzen. Und man kann das natürlich auch auf beliebig viele REM Zeilen verteilen.

Mit AUTOLINE kann man auch ganz auf Zeilennummern verzichten oder teilweise. Bei Sprunganweisungen wie GOTO oder GOSUB braucht man zwar Zeilennummern aber man kann auch Bereiche mit und ohne Zeilennummern mischen (nach 1000 macht er dann z.B. mit 1010 weiter).

Je nachdem ob man Werte zurückgeben möchte an das BASIC kann man PRINT USR oder RAND USR verwenden, auch Zuweisungen sind möglich (LET A=USR xxx) oder auch IF Konstrukte o.ä.

Code: Alles auswählen

        AUTOLINE 10

        REM NUR EIN KLEINES TESTPROGRAMM
        REM '(C) by PokeMon'

30      REM _asm
        LD A,,'Z'
        RST $10
        RET
label1:
        LD BC,11111
        RET
        END _asm

        RAND USR #30#
        PRINT ,,"zweiter Teil"
        PRINT USR #label1
        
        IF USR #label1 = 11111 THEN PRINT ,,"korrekt"

Wer seinen Computer ehrt, lebt nicht verkehrt.

funkheld
User
Beiträge: 193
Registriert: 16.11.2010, 18:20

Re: Codemix beim FASMW-ZX

Beitrag von funkheld » 21.11.2017, 14:04

Danke dein Beispiel hier ist gut , jetzt bin ich da durchgestiegen.

Gruss

Antworten