Warum wird hier nur das "A" ausgedruckt.

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

Warum wird hier nur das "A" ausgedruckt.

Beitrag von funkheld » 25.11.2017, 08:58

Warum wird bitte hier nur das "A" ausgedruckt.

Danke.
Gruss

Code: Alles auswählen

format zx81
;labelusenumeric
;LISTOFF

	// hardware options to be set and change defaults in ZX81DEF.INC
	MEMAVL	   =	   MEM_48K	   // can be MEM_1K, MEM_2K, MEM_4K, MEM_8K, MEM_16K, MEM_32K, MEM_48K
					   // default value is MEM_16K
	STARTMODE  EQU	   SLOW_MODE	   // SLOW or FAST
	DFILETYPE  EQU	   AUTO 	   // COLLAPSED or EXPANDED or AUTO
	// STARTUPMSG EQU    'CREATED WITH ZX81-IDE' // any message will be shown on screen after loading, max. 32 chars

	include 'd:\zx81\SINCL-ZX\ZX81.INC'	   // definitions of constants
;LISTON

	AUTOLINE 10

	REM  EIN BASASM-PROGRAMM
20	REM _asm
	LD A,,'A'
	RST $10
	RET
label1:
	LD BC,11111
	RET
label2: 
	LD A,,'B'
	RST $10
	RET	
	END _asm

	RAND USR #label1
	RAND USR #20#
	print sinus(45)
	RAND USR #label2
	print cosinus(45)
	PRINT USR #label1

	include 'd:\zx81\SINCL-ZX\ZX81DISP.INC'  ; include D_FILE and needed memory areas
VARS_ADDR:
	db 80h
WORKSPACE:

assert ($-MEMST)<MEMAVL
// end of program

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

Re: Warum wird hier nur das "A" ausgedruckt.

Beitrag von PokeMon » 25.11.2017, 11:10

Das hättest Du auch selbst rausbekommen können. :wink:
2/50 heißt ein undefinierte Variable wird in Zeile 50 benutzt.
SINUS(45) gibt es nicht und das BASIC erwartet hier ein Int Array und will den 45. Eintrag des Arrays lesen.
Die korrekte Funktion heißt im ZX81 BASIC SIN (oder COS).

Die ZX-IDE macht keinen Syntax Check wobei auch das hier nicht aufgefallen wäre, weil es in dem Kontext auch zulässig ist solche Variablen zu nutzen. Prinzipiell wenn BASIC erkannt wird werden (bekannte) Schlüsselworte ersetzt. Und entsprechend formatiert mit Zeilennummer, Zeilenlänge, Abschluss NEWLINE. Man kann auch Programme erstellen, die laut ZX81 Syntax gar nicht möglich sind und das merkt das BASIC dann erst bei der Ausführung.
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: Warum wird hier nur das "A" ausgedruckt.

Beitrag von PokeMon » 25.11.2017, 11:45

PS: Du brauchst in BASIC eigentlich kaum Klammern außer Du willst die Reihenfolge der Berechnung beeinflussen. Punktrechnung geht vor Strichrechnung und Funktionen gehen vor Punktrechnung. Also PRINT SIN 45 ist ausreichend. Und bei Arrays ist nur ein Buchstabe möglich, die müssen halt vorher mit DIM angelegt werden.
Wer seinen Computer ehrt, lebt nicht verkehrt.

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

Re: Warum wird hier nur das "A" ausgedruckt.

Beitrag von funkheld » 25.11.2017, 14:22

Jup, danke für die Info. Das mit SINUS... ist mir gar nicht aufgefallen.

Gruss

Antworten