remy / txt2bas

ZX Spectrum BASIC conversion tooling (specific support for NextBASIC)
19 stars 0 forks source link

48k.bas #37

Open Ygarr opened 1 year ago

Ygarr commented 1 year ago

Cannot convert 48k basic version code. No download

remy commented 1 year ago

Can you provide source example?

Ygarr commented 1 year ago

here it is: 10 CLS 20 BORDER 0: PAPER 0: INK 7: PRINT "HELICOPTER GAME": PRINT "----------------": PRINT: PRINT "INSTRUCTIONS:": PRINT "------------": PRINT "USE THE UP AND DOWN ARROW": PRINT "KEYS TO FLY THE HELICOPTER.": PRINT "AVOID THE BUILDINGS.": PRINT: PRINT "PRESS ANY KEY TO START": REPEAT UNTIL INKEY$<>""

30 RANDOMIZE USR 32768

40 REM DRAW THE GROUND 50 FOR X=1 TO 32 60 PLOT X,24 70 NEXT X

80 REM POSITION THE HELICOPTER 90 LET X=3: LET Y=10 100 PLOT X,Y

110 REM DRAW THE BUILDINGS 120 FOR X=10 TO 25 130 LET H=RND(10)+5 140 FOR Y=1 TO H 150 PLOT X,Y 160 NEXT Y 170 FOR Y=H+4 TO 24 180 PLOT X,Y 190 NEXT Y 200 NEXT X

210 REM MAIN GAME LOOP 220 LET DY=0 230 LET SCORE=0 240 LET B=10 250 LET C=0 260 LET F=0

270 REPEAT 280 LET OLDX=X 290 LET OLDY=Y

300 LET KEY$=INKEY$ 310 IF KEY$="u" THEN LET DY=-2 320 IF KEY$="d" THEN LET DY=1 330 IF DY>3 THEN LET DY=3 340 IF DY<-2 THEN LET DY=-2

350 LET Y=Y+DY

360 IF Y<1 THEN LET Y=1 370 IF Y>22 THEN LET Y=22

380 IF X<4 THEN LET X=4 390 IF X>28 THEN LET X=28

400 FOR I=X-2 TO X+2 410 FOR J=Y-2 TO Y+2 420 IF POINT(I,J)=1 THEN LET F=1 430 NEXT J 440 NEXT I

450 IF F=1 THEN GO TO 520

460 LET SCORE=SCORE+1

470 IF SCORE=10 THEN LET B=B-1: LET SCORE=0 480 IF B<5 THEN LET B=5

490 IF C>B THEN LET C=0: LET X=32: GO TO 90 500 LET C=C+1

510 LET F=0

520 LET A=C/20: LET C=C+1 530 IF A=INT(A) THEN LET X=X-1

540 FOR I=1 TO 24 550 LET J=X-2 560 IF POINT(J,I)=1 THEN LET F=1 570 LET J=X+2 580 IF POINT(J,I)=1 THEN LET F=1 590 NEXT I

600 IF F=1 THEN GO TO 520

610 LET SCORE=SCORE+1

620 IF SCORE=10 THEN LET B=B-1: LET SCORE=0 630 IF B<5 THEN LET B=5

640 IF C>B THEN LET C=0: LET X=32: GO TO 90 650 LET C=C+1

660 PLOT OLDX,OLDY: PLOT X,Y

670 PRINT AT 23,0;"SCORE: "; SCORE

680 PAUSE 5

690 UNTIL FALSE

TheStruggleForAntiSpaghetti commented 1 year ago

Is this BASIC converted from a different machine? The Spectrum doesn't have REPEAT UNTIL (line 20). Line 690 is invalid too.

remy commented 1 year ago

REPEAT UNTIL is zx next syntax, right? (I'm a little rusty) - but if this is something else then it'll have trouble parsing it.

TheStruggleForAntiSpaghetti commented 1 year ago

REPEAT UNTIL is zx next syntax, right? (I'm a little rusty) - but if this is something else then it'll have trouble parsing it.

Could be, don't know the Next myself. Still, shouldn't it then need the -t option and else throw an error?

remy commented 1 year ago

I'm on my phone so can't check properly, but there's an issue with line 300 which is preventing the download.

It's either an error with the source BASIC (which I...doubt) or it's an error with my parser (more likely). Screenshot_20230225-192001