![]() |
|
Where does Boriel assemble to? - Printable Version +- Boriel Basic Forum (https://forum.boriel.com) +-- Forum: Compilers and Computer Languages (https://forum.boriel.com/forumdisplay.php?fid=12) +--- Forum: ZX Basic Compiler (https://forum.boriel.com/forumdisplay.php?fid=11) +---- Forum: Help & Support (https://forum.boriel.com/forumdisplay.php?fid=16) +---- Thread: Where does Boriel assemble to? (/showthread.php?tid=812) |
Where does Boriel assemble to? - ivanb303 - 2017-07-17 So this is like an etch-o-sketch but It doesn't like the screen grabbing part. This all works fine in Sinclair BASIC. I'm guessing the picture data collides with Boriel's compiled code. I'm also guessing that Boriel decides where to inline ASM sections. Can you explicitly tell Boriel where to assemble to ? Code: #include <fastPlot.bas>
DIM cx,cy,x,y,cl AS UINTEGER
10 REM The variables
20 LET cx=128: LET cy=80: LET x=cx: LET y=cy:LET cl=0: INK 0
30 INK cl: fastPlot(x,y)
100 IF INKEY$="a" AND x>=0 THEN LET x=x-1: END IF
120 IF INKEY$="s" AND x<=255 THEN LET x=x+1: END IF
130 IF INKEY$="o" AND y<=175 THEN LET y=y+1: END IF
150 IF INKEY$="k" AND y>=0 THEN LET y=y-1: END IF
160 IF INKEY$="f" THEN PRINT AT 0,0;"Frame grabbed!": grabScreen(): END IF
170 IF INKEY$="g" THEN PRINT AT 0,0;"Frame pasted!": CLS : dumpScreen() : END IF
180 IF INKEY$="n" AND cl>=0 THEN LET cl=cl-1: END IF
190 IF INKEY$="m" AND cl<=7 THEN LET cl=cl+1: END IF
200 GO TO 30
SUB grabScreen()
ASM
LD HL,16384
LD DE,51200
LD BC,6912
LDIR
RET
END ASM
END SUB
SUB dumpScreen()
ASM
LD HL,51200
LD DE,16384
LD BC,6912
LDIR
RET
END ASM
END SUBWhat i found strange also was that sometimes it seems to work fine, and sometimes it doesn't. Pressing f button does the frame grab but FUSE freezes, the border goes blue and you might get garbled stuff at bottom of screen. Re: Where does Boriel assemble to? - boriel - 2017-07-18 Some observations:
Any other questions just tell me (I will try your code when I have some spare time). Re: Where does Boriel assemble to? - ivanb303 - 2017-07-18 Hi I removed the RET statements that seems to do the trick. Thank you
Re: Where does Boriel assemble to? - boriel - 2017-07-18 you're welcome. :roll: if your function / subs are entirely in ASM (as in the previous example), you can use FASTCALL for better performance. E.g. SUB FASTCAL xxx( ) .... |