Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

29. March 2024, 10:31:37

Login with username, password and session length

Shoutbox

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
Stats
  • Total Posts: 11,655
  • Total Topics: 1,329
  • Online today: 188
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 2
Guests: 132
Total: 134

132 Guests, 2 Users
GarfieldTheFirst, xesrjb

Doppelt gepuffert zeichnen

Started by Devilmarkus, 16. August 2020, 16:57:13

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Devilmarkus

Vielleicht interessiert es ja Jemanden, wie man unter BASIC mit doppeltem Puffer arbeiten kann:

10 AD=&A000:L=&30
20 READ a:POKE AD+P,a
30 P=P+1:IF P=L THEN GOTO 80
40 GOTO 20
50 DATA &3E,&C0,&CD,&08,&BC,&01,&0C,&BC,&ED,&49,&01,&10,&BD,&ED,&49,&C9
60 DATA &3E,&40,&CD,&08,&BC,&01,&0C,&BC,&ED,&49,&01,&30,&BD,&ED,&49,&C9
70 DATA &3E,&C0,&CD,&08,&BC,&01,&0C,&BC,&ED,&49,&01,&30,&BD,&ED,&49,&C9
80 a=0:MODE 1:ON BREAK GOSUB 170:DEG:DEFINT a-Z:PAPER 0:GOSUB 150:CLS:GOSUB 150:CLS
81 WINDOW 11,30,7,22
90 FOR k=0 TO 360 STEP 10
100 GOSUB 150:CLS
110 MOVE 320+150*SIN(k),100+50*COS(k):g=90:FOR l=1 TO 4:DRAW 320+150*SIN(k+g),100+50*COS(k+g):g=g+90:NEXT
120 g=90:FOR l=1 TO 4:MOVE 320,300:DRAW 320+150*SIN(k+g),100+50*COS(k+g):g=g+90:NEXT
130 NEXT
140 GOTO 90
150 IF a=0 THEN CALL &A000:a=1 ELSE a=0:CALL &A010
160 RETURN
170 CALL &A020:END


Assemblercode: (Ohne geht es eben nur sehr umständlich)

; doublebuffer

org &a000
offset4000:
ld a,&c0
call &bc08
ld bc,&bc0c
out (c),c
ld bc,&bd10
out (c),c
ret
offsetC000:
ld a,&40
call &bc08
ld bc,&bc0c
out (c),c
ld bc,&bd30
out (c),c
ret
offsetoff:
ld a,&c0
call &bc08
ld bc,&bc0c
out (c),c
ld bc,&bd30
out (c),c
ret
https://cpcwiki.de
Dein Deutsches CPCWiki!