CPC Wiki Forum Die Amstrad-CPC-Community

CPCBasic "Unchained"

Started by mv · 2020-01-28 22:08 · Replies: 21 · Views: 7890
#21
— cpcman
Screen-Wechsel : C000 und 4000 funktioniert nicht.

----------------------------
10 MODE 2
20 MEMORY &3FFF
30 POKE &B7C6,&C0
...
--------------------------------


Im Prinzip funktioniert das schon mit CALL &BC06. Obwohl es kein ROM gibt, wird eine ganze Reihe von CALL-Befehlen unterstützt, die mit reinem BASIC benutzt werden können:
https://github.com/benchmarko/CPCBasicTS/#supported-calls-and-outs
Systembereiche im RAM werden nicht simuliert, somit funktioniert POKE &B7C6 nicht.
Und dann ist noch eine Verzögerung mit FRAME oder CALL &BD19 wichtig. Also etwa so...

10 MODE 2
20 MEMORY &3FFF
30 CALL &BC06,&C0
40 PRINT "TEST C000"
50 CALL &BC06,&40
60 PRINT "TEST    4000"
70 CALL &BC06,&C0
80 FOR A=0 TO 500/10:FRAME
90 NEXT A
100 CALL &BC06,&40
110 FOR A=0 TO 500/10:FRAME
120 NEXT A
130 GOTO 70
👍 0👎 0
#22
— cpcman
Frage war nicht richtig von mir.
Wieviel KB hat dieser EMU CPCBasic hier?

Danke.


Laut Testprogramm 576KB:
https://benchmarko.github.io/CPCBasicTS/?database=apps&example=test/ramtest
Oder:
https://benchmarko.github.io/CPCBasicTS/?database=apps&example=test/eramtst

Da Arrays derzeit nicht im CPC-RAM abgelegt werden, funktioniert für Real-Zahlen ein DIM bis 32767. (Nicht dass man es benutzen sollte, ohne "Settings: Array Bounds" können Arrays "beliebig groß" werden.)

10 REM arrtst - Array Test
20 DIM a(32767)
30 n=32767
40 FOR i=1 TO n:a(i)=i:NEXT
50 FOR i=1 TO n
60 IF a(i)<>i THEN ?"Error at";i:STOP
70 NEXT
80 ?"ok"
👍 0👎 0

Log in to post