Quarantine challenge

sly*m

Retro Addict
Messages
529
Reaction score
1,364
Points
103
Παιδιά ευχαριστώ πολύ για τα καλά σας λόγια! :love: Όντως η ιδέα του @ChrisTOS για το challenge είναι εξαιρετική!:thumbup:

@clemenza Πάνο, συνέχισε την καλή δουλειά. Και γω δεν έχω πολύ χρόνο, παρ'όλη την καραντίνα. Έτσι ομολογώ ότι έχω δεί επιφανειακά το αφιέρωμα σου στην Basic στο blog σου... Θα προσπαθήσω να δω τα άρθρα σου προσεκτικά.

@dimfil Δημήτρη όντως είναι αργό το print στην Atari Basic. Βλέπεις ότι είναι πιό αργό και από του PET! Πρέπει να σου πω ότι δεν έχω εμβαθύνει σε μηχανήματα μεταγενέστερα του παλιού 800. Όμως είναι το πρώτο μου μηχάνημα και παρ'όλο που απόκτησα και το 130XE τα τελευταία χρόνια, ακόμα και τους emulators τους ρυθμίζω να παίζουν σαν παλιό 800 με 48K ram και OSΑ-OSΒ. Δεν έχω πειραματιστεί σε hardware σχήματα XL-XE και μεταγενέστερες basic-assemblers από την 'μαμά', ίσως κάποια στιγμή να το κάνω.

Οπότε τα βιβλία που έχω να σου προτείνω για το A8 είναι αυτά τα οποία έχω από τότε, αλλά πιστεύω είναι μια καλή αρχή.

Basic Reference Manual (Atari)
Assembler Editor User Manual (Atari)
Disk Operating System II Reference Manual (Atari)
De Re Atari (Atari)
Hardware Manual (Atari)
Technical Reference Notes (Atari)
Operating System Source Listing (Atari)
Mapping The Atari (Compute!)
Inside Atari DOS (Compute!)
Compute!'s First Book of Atari
Compute!'s Second Book of Atari
Inside Atari Basic (Bill Carris)
Get More From The Atari (Ian Sinclair)
Programming The 6502 (Rodnay Zacks)
Games Ataris Play

Αυτά είναι που έχω σε φυσική μορφή (ίσως έχω ξεχάσει κάνα-δυό) αλλά βέβαια έχω κατεβάσει τον άμμο της θάλασσας σε pdf για το 8μπιτο. Προφανώς όπου υπάρχουν θα κατεβάσεις τα versions για XL-XE. Πολύ καλά βιβλία έχει και το ANALOG.

Όχι ολοκληρωμένη λίστα από Sites (σίγουρα ξεχνάω πολλά):

Φοβάμαι ότι ξεφύγαμε απο το topic του thread, ας συνεχίσουμε την προσπάθεια για όσα micros μπορούμε...
 

geoanas

Commodore Vampire
Staff member
Messages
7,224
Reaction score
5,988
Points
223
@clemenza Πάνο, συνέχισε την καλή δουλειά. Και γω δεν έχω πολύ χρόνο, παρ'όλη την καραντίνα. Έτσι ομολογώ ότι έχω δεί επιφανειακά το αφιέρωμα σου στην Basic στο blog σου... Θα προσπαθήσω να δω τα άρθρα σου προσεκτικά.
Άστα και δεν είσαι ο μόνος :( Το έχω σίγουρα στο πρόγραμμα αλλά κι εγώ παρ όλη την καραντίνα έχω μυαλό κουρκούτι με διάφορες παπαρίτσες που συμβαίνουν στον εργασιακό μου χώρο. Τα άρθρα του Πάνου είναι για μελέτη
 

dimfil

Retro Mentor
Messages
1,095
Reaction score
1,811
Points
123
Όχι ολοκληρωμένη λίστα από Sites (σίγουρα ξεχνάω πολλά):

Φοβάμαι ότι ξεφύγαμε απο το topic του thread, ας συνεχίσουμε την προσπάθεια για όσα micros μπορούμε...

Σε ευχαριστώ.
Αυτά τα sites (μαζί με πολλά άλλα) τα γνωρίζω ήδη γι αυτό ήθελα τη βοήθειά σου να ψάξω για συγκεκριμένο υλικό μέσα στο χάος! Η βιβλιογραφία που έδωσες παραπάνω θα τιμηθεί δεόντως!
Ελπίζω να συγχωρεθεί το (μικρό ελπίζω) off topic, άλλωστε συνάδει με το σκοπό του challenge αφού βοηθάει να γίνουμε καλύτεροι.

Εκκρεμεί το παράδειγμα του @ChrisTOS. Πίστευα ότι θα καταπιαστώ αυτές τις ημέρες αλλά ο μικρός έχει κολλήσει πάνω μου και δεν βρίσκω χρόνο καθόλου! Ελπίζω σύντομα κάτι να κάνω.

Από Basic σε άλλα μηχανήματα, μόνο στον BBC έχω πειραματιστεί. Πολύ θα ήθελα να βρω χρόνο να προσπαθήσω και εκεί.
 

darthcotsos

Retro Starter
Messages
54
Reaction score
71
Points
18
ΝΙΜ ε? καλή φάση... να και σε ZX Spectrum... :p

Code:
10 REM NIM GAME FOR ZX SPECTRUM
20 BORDER 7: PAPER 7: INK 0: CLS : PRINT "PLEASE WAIT..."
25 LET Q=1
30 GO SUB 9000
40 LET G=0: LET H=0
50 RANDOMIZE Q: LET Q=Q+1
60 IF Q=65535 THEN LET Q=1
70 BORDER 0: PAPER 0: INK 2: CLS
80 PRINT AT 3,10;"*** NIM ***"
90 PRINT AT 6,0;"THIS IS A GAME OF NIM. TO PLAY"
100 PRINT AT 7,0;"YOU ENTER THE NUMBER OF MACHES"
110 PRINT AT 8,0;"TO REMOVE THE COMPUTER WILL THEN"
120 PRINT AT 9,0;"MAKE IT'S MOVE. THE ONE WHO"
130 PRINT AT 10,0;"TAKES THE LAST MATCH LOSES."
140 FLASH 1: PRINT AT 14,3;"PRESS 'ENTER' TO CONTINUE...": FLASH 0
150 LET A$=INKEY$
160 IF A$<>CHR$ (13) THEN GO TO 150
170 CLS : PRINT AT 3,10;"*** NIM ***"
180 INPUT AT 5,0;"HOW MANY MATCHES? (4 TO 26):"; LINE A$
190 IF A$="" THEN LET A$="0"
200 LET M=VAL (A$)
210 IF M<4 OR M>26 THEN GO TO 180
220 LET L=0: LET N=M: LET W=M
230 CLS : PRINT AT 3,10;"*** NIM ***"
240 FOR I=1 TO M
250 INK 2: PRINT AT 5,I;"\a": INK 6
260 PRINT AT 6,I;"\b"
270 PRINT AT 7,I;"\b"
280 PRINT AT 8,I;"\b"
290 PRINT AT 9,I;"\b"
300 NEXT I
310 INK 2
320 PRINT AT 20,0;"DO YOU WANT TO MOVE FIRST?           ": LET A$=INKEY$
330 IF A$<>"Y" AND A$<>"y" AND A$<>"N" AND A$<>"n" THEN GO TO 320
340 INK 0: PRINT AT 20,0;"                                     ": INK 2
350 IF A$="N" OR A$="n" THEN GO TO 470
360 PRINT AT 19,0;"THERE ARE NOW ";M;" MATCH(ES).       "
370 PRINT AT 20,0;"TAKE 1 TO 3 MATCHES                  ": LET U=1
380 INPUT LINE A$: IF A$="" THEN LET A$="0"
390 LET H=VAL (A$)
400 IF H>3 OR H<1 OR H>M THEN PRINT AT 21,0;"WRONG VALUE. TRY AGAIN.               ": GO TO 360
410 INK 0: FOR I=19 TO 21: PRINT AT 0,I;"                                       ": NEXT I: INK 2
420 LET X=L+H
430 GO SUB 720
440 LET L=X
450 LET M=M-H
460 IF M=0 THEN GO TO 630
470 REM
480 IF M=1 THEN GO TO 700
490 LET R=M-4*INT (M/4)
500 IF R<>1 THEN GO TO 530
510 LET C=INT (RND*3)+1
520 GO TO 540
530 LET C=(R+3)-4*INT ((R+3)/4)
540 LET X=L+C
550 PRINT AT 19,0;"MY TURN, I'M THINKING...                ": LET U=0
555 PRINT AT 20,0;"                                        "
560 GO SUB 720
570 LET L=X
580 LET M=M-C: IF M=0 THEN GO TO 700
600 INK 2: PRINT AT 20,0;"I TOOK ";C;" MATCH(ES) PRESS ANY KEY     "
610 LET A$=INKEY$: IF A$="" THEN GO TO 610
620 GO TO 360
630 REM
640 INK 2: PRINT AT 19,0;"I WON! BETTER LUCK NEXT TIME...           "
650 INK 2: PRINT AT 20,0;"DO YOU WANT TO PLAY AGAIN?                "
660 LET A$=INKEY$
670 IF A$="" THEN GO TO 660
680 IF A$<>"N" AND A$<>"n" THEN GO TO 40
690 BORDER 7: PAPER 7: INK 0: CLS : PRINT "THANKS FOR THE GAME": STOP

700 INK 2: PRINT AT 19,0;"YOU WON!!! NICE GOING                      ": GO TO 650
720 REM
730 IF U=0 THEN LET G=G+C
740 IF U=1 THEN LET G=G+H
760 FOR I=1 TO G
770 FOR J=5 TO 9
780 INK 0: PRINT AT J,I;" "
790 NEXT J
800 IF U=0 THEN PAUSE 10
810 NEXT I
820 INK 2
830 RETURN
9000 RESTORE 9001: FOR F=65368 TO 65535: READ A: POKE F,A: NEXT F
9010 DATA 56,124,238,222,254,254,124,56
9020 DATA 56,56,56,56,56,56,56,56
9030 DATA 0,60,66,64,64,66,60,0
9040 DATA 0,120,68,66,66,68,120,0
9050 DATA 0,126,64,124,64,64,126,0
9060 DATA 0,126,64,124,64,64,64,0
9070 DATA 0,60,66,64,78,66,60,0
9080 DATA 0,66,66,126,66,66,66,0
9090 DATA 0,62,8,8,8,8,62,0
9100 DATA 0,2,2,2,66,66,60,0
9110 DATA 0,68,72,112,72,68,66,0
9120 DATA 0,64,64,64,64,64,126,0
9130 DATA 0,66,102,90,66,66,66,0
9140 DATA 0,66,98,82,74,70,66,0
9150 DATA 0,60,66,66,66,66,60,0
9160 DATA 0,124,66,66,124,64,64,0
9170 DATA 0,60,66,66,82,74,60,0
9180 DATA 0,124,66,66,124,68,66,0
9190 DATA 0,60,64,60,2,66,60,0
9200 DATA 0,254,16,16,16,16,16,0
9210 DATA 0,66,66,66,66,66,60,0
9300 RETURN
19514
 

Attachments

Last edited:

dimfil

Retro Mentor
Messages
1,095
Reaction score
1,811
Points
123
Ένα πολύ μικρό contribute από εμένα. Είναι η μεταφορά του κώδικα του Μάνου @sly*m σε Turbo Basic XL, απλά για να δείξω πόσο εξαιρετικά χειρίζεται η TBXL τις υπορουτίνες κάνοντας τον κώδικα πιο εύκολα διαχειρίσιμο...

Code:
1 REM 10 PRINT RACE ON ATARI 800
2 REM Based on 8-Bit Show And Tell's
3 REM Commodore PET Game
4 REM youtube.com/watch?v=bCTrdVhjjWo
5 REM *******************************

10 DIM A$(75),B$(1),C$(15):FOR A=1 TO 15:C$(A)=" ":NEXT A:EXEC A

19 REM Define main procedure
20 PROC A:POKE 82,0:A$="":PRINT "}INIT";:FOR A=1 TO 75:B$=CHR$(INT(5.5+RND(53770)+1)):A$(A)=B$:PRINT B$;:NEXT A:OPEN #1,4,0,"K"
30 # B:GRAPHICS 0:POKE 752,1:B=20:C=13:D=15:E=0
40 # C:F=0:FOR G=0 TO 1 STEP 0:A=RND(53770)*10:IF A<4 THEN C=C-1:IF C<1 THEN C=1
50 IF A>5 THEN C=C+1:IF C+D>37 THEN C=37-D
60 H=RND(53770)*35+1:PRINT A$(H,H+C);C$(1,D);A$(H,H+37-C-D):E=E+1:F=F+1:IF F>49 THEN F=0:D=D-1:IF D<3 THEN D=3
70 IF E<25 THEN GO# C

79 REM Check stick movement and crash
80 EXEC D:LOCATE B,0,I:IF I<>32 THEN EXEC E
90 POSITION B,0:PRINT "*":POSITION 0,23:NEXT G:ENDPROC

99 REM Define procedure to check crash
100 PROC E:POSITION 0,23:PRINT C$;"CRASH!":IF E>J THEN J=E
110 PRINT "       SCORE : ";E;"   HIGH : ";J:GET #1,K:EXEC F:EXEC G:ENDPROC

119 REM Define procedure for new game
120 PROC F:IF K=32 THEN GO# B
130 ENDPROC

139 REM Define procedure to end game
140 PROC G:CLOSE #1:POKE 752,0:POKE 82,2:END :ENDPROC

149 REM Define procedure to check stick movement
150 PROC D:IF STICK(0)=11 THEN B=B-1
160 IF STICK(0)=7 THEN B=B+1
170 ENDPROC
 

clemenza

Retro Addict
Messages
966
Reaction score
1,354
Points
93
Λοιπόν, θα ήθελα να ζητήσω προκαταβολικά συγγνώμη για την καθυστέρηση, αλλά και για το πρόγραμμα. Τι εννοώ; Ότι, προκειμένου να γλυτώσω χρόνο, να ανεβάσω κι εγώ το listing μου και να προχωράμε (και ΚΥΡΙΩΣ να μην ατονήσει το ενδιαφέρον για το παρόν topic), έκανα την (ίσως) χειρότερη δυνατή μεταφορά, με μόνο κριτήριο το να... λειτουργεί!

Σκεφτείτε ότι επέλεξα το format βασιζόμενος μονάχα στο να υποστηρίζει σωστά το copy-paste ο εξομοιωτής, και να μην κάθομαι να τα γράφω όλα από την αρχή! Αφού λοιπόν έβαλα το listing του Atari στον YAPE - ναι, έκανα τη μεταφορά για Commodore 16 & Plus/4 αλλά με ελάχιστες αλλαγές παίζει και σε Commodore 64 -, προχωρούσα σιγά-σιγά προς τα κάτω, αλλάζοντας ό,τι χρειαζόταν με τις αντίστοιχες εντολές της Commodore BASIC. Πλην της τελευταίας υπορουτίνας, όπου, αντί να σβήνω σπίρτα, απλά το έβαλα (χάριν ευκολίας) να ξαναζωγραφίζει όσα σπίρτα είχαν απομείνει.

Anyway, έστω και έτσι, λειτουργεί, οπότε μπορούμε να προχωρήσουμε!

19520

19521

Code:
1000 COLOR 4,1                         
1010 COLOR 0,1                         
1020 COLOR 1,4                         
1080 PRINT CHR$(147)                   
1090 PRINT "*** NIM ***"               
1100 PRINT                             
1110 PRINT                             
1120 PRINT "THIS IS THE GAME OF NIM. TO
PLAY"                                   
1130 PRINT "YOU ENTER THE NUMBER OF MATC
HES TO"                                 
1140 PRINT "REMOVE. THE COMPUTER WILL TH
EN MAKE"                               
1150 PRINT "IT'S MOVE. THE ONE WHO TAKES
 THE"                                   
1160 PRINT "LAST MATCH LOSES."         
1180 PRINT "PRESS 'RETURN' TO CONTINUE."
;                                       
1190 INPUT A$                           
1200 PRINT CHR$(147)                   
1220 PRINT "*** NIM ***"               
1230 PRINT :PRINT                       
1240 PRINT "HOW MANY MATCHES? (4 TO 26)"
1250 INPUT A$:IF A$="" THEN A$="0"     
1260 M=VAL(A$)                         
1270 IF M<4 OR M>26 THEN 1250           
1280 PRINT CHR$(147);CHR$(19)           
1290 L=0                               
1300 N=M                               
1310 W=M                               
1330 COLOR 1,3                         
1331 PRINT                             
1340 FOR I=1 TO M                       
1360 PRINT CHR$(79);                   
1370 NEXT I                             
1371 PRINT                             
1372 COLOR 1,8                         
1373 FOR D=1 TO 3                       
1374 FOR I=1 TO M                       
1375 PRINT CHR$(98);                   
1376 NEXT I                             
1377 PRINT                             
1378 NEXT D                             
1379 PRINT                             
1410 PRINT "DO YOU WANT TO MOVE FIRST?"
1420 INPUT A$                           
1430 IF A$="N" THEN 1540               
1440 PRINT "THERE ARE NOW ";M;" MATCH(ES
)."                                     
1450 PRINT "TAKE 1 TO 3 MATCHES ";     
1460 INPUT A$:IF A$="" THEN A$="0"     
1470 H=VAL(A$)                         
1480 IF H>3 OR H<1 OR H>M THEN PRINT "BA
D NUMBER. TRY AGAIN.":GOTO 1440         
1490 X=L+H                             
1500 GOSUB 1770                         
1510 L=X                               
1520 M=M-H                             
1530 IF M=0 THEN 1690                   
1540 REM                               
1550 IF M=1 THEN 1750                   
1560 R=M-4*INT(M/4)                     
1570 IF R<>1 THEN 1600                 
1580 C=INT(3*RND(1))+1                 
1590 GOTO 1610                         
1600 C=(R+3)-4*INT((R+3)/4)             
1610 X=L+C                             
1620 PRINT "MY TURN, I'M THINKING"     
1625 FOR B=1 TO 999:NEXT               
1630 GOSUB 1770                         
1640 L=X                               
1650 M=M-C:IF M=0 THEN 1750             
1660 GOSUB 1770                         
1670 PRINT "I TOOK ";C;" MATCH(ES)"     
1680 GOTO 1440                         
1690 REM                               
1700 PRINT "I WON! BETTER LUCK NEXT TIME
"                                       
1710 PRINT "DO YOU WANT TO TRY AGAIN"   
1720 INPUT A$                           
1730 IF A$<>"N" THEN 1200               
1740 PRINT "THANKS FOR THE GAME":END   
1750 PRINT "YOU WON!!! NICE GOING":GOTO
1710                                   
1760 PRINT                             
1770 PRINT CHR$(147)                   
1780 COLOR 1,3                         
1782 PRINT                             
1784 FOR I=1 TO M                       
1786 PRINT CHR$(79);                   
1788 NEXT I                             
1790 PRINT                             
1792 COLOR 1,8                         
1794 FOR D=1 TO 3                       
1796 FOR I=1 TO M                       
1798 PRINT CHR$(98);                   
1800 NEXT I                             
1802 PRINT                             
1804 NEXT D                             
1806 PRINT                             
1830 FOR K=1 TO 10                     
1840 NEXT K                             
1860 RETURN
 

clemenza

Retro Addict
Messages
966
Reaction score
1,354
Points
93
Πάντως, με αυτό που ξεκινήσαμε με αφορμή αυτό το topic, κάθομαι και σκέφτομαι πόσο τέλεια θα ήταν εάν τότε, στα πρώτα τεύχη του PIXEL που διψούσαμε για listings, υπήρχε ένα section ή ένα ολόκληρο έντυπο με τα ίδια προγράμματα να έχουν μεταφερθεί σε όλα τα δημοφιλή home micros - σαν κι αυτό που κάνουμε τώρα, δηλαδή. Νομίζω ότι θα ήταν καταπληκτικό κάτι τέτοιο, και το λέω από τη σκοπιά του χρήστη που αρχικά δεν είχε ιδιαιτέρως δημοφιλές μηχάνημα (TRS-80 CoCo) και έβλεπε με φθόνο τα πολυσέλιδα listings για τα μηχανάκια της Sinclair (κυρίως), ενώ αυτός και το μηχάνημά του έμεναν μονίμως στην "απ' έξω"... :(

Τι να πω, έστω και με μια καθυστέρηση 37 ετών, έστω και λόγω της πανδημίας, καταφέραμε να βάλουμε το λιθαράκι μας και σιγά-σιγά να αρχίσουμε να διορθώνουμε αυτή την ιστορική αδικία! ;)
 

darthcotsos

Retro Starter
Messages
54
Reaction score
71
Points
18
Και το Madelbrot του Vinc σε Σπεχτρουm!!! :p
19522
Code:
10 BORDER 1: CLS
20 LET e=-1.3
30 FOR y=0 TO 170
40 LET d=-2.4
50 FOR x=0 TO 245
60 LET z=0: LET i=0: LET a=0
70 IF a<8 AND (z*z+i*i)<4 THEN LET s=(z*z)-(i*i)+d: LET r=(2*1*z)+e: LET z=s: LET i=r: LET a=a+1
80 IF a<8 AND (z*z+i*i)<4 THEN GO TO 70
90 INK a
100 PLOT x+5,y+3
110 LET d=d+0.0215
120 NEXT x
130 LET e=e+0.013
140 NEXT y
 
Last edited:

Vincent

Retro Addict
Messages
807
Reaction score
1,615
Points
103
CPC

Code:
10 MODE 1:BORDER 0,26
20 FOR i=0 TO 2
30 READ colour(i)
40 INK i,colour(i)
50 NEXT
60 FOR i=0 TO 2
70 NEXT i
80 CLS
90 gp=1:GRAPHICS PEN gp:w=125
100 x=-65:a=240:y=400:b=-150:GOSUB 240
110 y=0:b=150:GOSUB 240
120 x=575:a=-240:y=400:b=-150:GOSUB 240
130 y=0:b=150:GOSUB 240
140 gp=2:GRAPHICS PEN gp:w=40
150 a=240:x=-40:y=400:b=-150:GOSUB 240
155 x=0:y=0:b=150:GOSUB 240
160 a=-240:x=640:y=0:b=150:GOSUB 240
170 x=600:y=400:b=-150:GOSUB 240
180 ORIGIN 0,0,256,380,0,400:CLG 1
190 ORIGIN 0,0,0,640,150,250:CLG 1
200 ORIGIN 0,0,280,352,0,400:CLG 2
210 ORIGIN 0,0,0,640,168,230:CLG 2
220 DATA 2,26,6
230 END
240 MOVE x,y:DRAWR a,b:DRAWR w,0:DRAWR -a,-b
250 MOVE x+a/2+w/2,y+b/2:FILL gp
260 RETURN
Code:
2 MODE 1
5 CLS
10 PLOT 295,0
20 DRAW 345,0
30 DRAW 345,220
40 DRAW 500,220
50 DRAW 500,270
60 DRAW 345,270
70 DRAW 345,390
80 DRAW 295,390
90 DRAW 295,270
100 DRAW 140,270
110 DRAW 140,220
120 DRAW 295,220
130 DRAW 295,0
140 PLOT 305,10
150 DRAW 335,10
160 DRAW 335,230
170 DRAW 490,230
180 DRAW 490,260
190 DRAW 335,260
200 DRAW 335,380
210 DRAW 305,380
220 DRAW 305,260
230 DRAW 150,260
240 DRAW 150,230
250 DRAW 305,230
260 DRAW 305,10
265 LOCATE 14,6:PRINT "KALO"
266 LOCATE 24,6:PRINT "PASXA"
270 MOVE 320,200
280 FILL 2
290 MOVE 320,5
300 FILL 3
301 MOVE 320,200
302 FILL 3
303 MOVE 320,5
304 FILL 2
305 MOVE 320,200
306 FILL 3
307 MOVE 320,5
308 FILL 1
310 pencolour=2+RND*13
320 FILL pencolour
330 GOTO 310
340 BORDER 6
 

sly*m

Retro Addict
Messages
529
Reaction score
1,364
Points
103
Και το Madelbrot του Vinc σε Σπεχτρουm!!! :p
View attachment 19522
Code:
10 BORDER 1: CLS
20 LET e=-1.3
30 FOR y=0 TO 170
40 LET d=-2.4
50 FOR x=0 TO 245
60 LET z=0: LET i=0: LET a=0
70 IF a<8 AND (z*z+i*i)<4 THEN LET s=(z*z)-(i*i)+d: LET r=(2*1*z)+e: LET z=s: LET i=r: LET a=a+1
80 IF a<8 AND (z*z+i*i)<4 THEN GO TO 70
90 INK a
100 PLOT x+5,y+3
110 LET d=d+0.0215
120 NEXT x
130 LET e=e+0.013
140 NEXT y

Ωραίο Κώστα!


19527
 

clemenza

Retro Addict
Messages
966
Reaction score
1,354
Points
93
CPC

Code:
10 MODE 1:BORDER 0,26
20 FOR i=0 TO 2
30 READ colour(i)
40 INK i,colour(i)
50 NEXT
60 FOR i=0 TO 2
70 NEXT i
80 CLS
90 gp=1:GRAPHICS PEN gp:w=125
100 x=-65:a=240:y=400:b=-150:GOSUB 240
110 y=0:b=150:GOSUB 240
120 x=575:a=-240:y=400:b=-150:GOSUB 240
130 y=0:b=150:GOSUB 240
140 gp=2:GRAPHICS PEN gp:w=40
150 a=240:x=-40:y=400:b=-150:GOSUB 240
155 x=0:y=0:b=150:GOSUB 240
160 a=-240:x=640:y=0:b=150:GOSUB 240
170 x=600:y=400:b=-150:GOSUB 240
180 ORIGIN 0,0,256,380,0,400:CLG 1
190 ORIGIN 0,0,0,640,150,250:CLG 1
200 ORIGIN 0,0,280,352,0,400:CLG 2
210 ORIGIN 0,0,0,640,168,230:CLG 2
220 DATA 2,26,6
230 END
240 MOVE x,y:DRAWR a,b:DRAWR w,0:DRAWR -a,-b
250 MOVE x+a/2+w/2,y+b/2:FILL gp
260 RETURN
Code:
2 MODE 1
5 CLS
10 PLOT 295,0
20 DRAW 345,0
30 DRAW 345,220
40 DRAW 500,220
50 DRAW 500,270
60 DRAW 345,270
70 DRAW 345,390
80 DRAW 295,390
90 DRAW 295,270
100 DRAW 140,270
110 DRAW 140,220
120 DRAW 295,220
130 DRAW 295,0
140 PLOT 305,10
150 DRAW 335,10
160 DRAW 335,230
170 DRAW 490,230
180 DRAW 490,260
190 DRAW 335,260
200 DRAW 335,380
210 DRAW 305,380
220 DRAW 305,260
230 DRAW 150,260
240 DRAW 150,230
250 DRAW 305,230
260 DRAW 305,10
265 LOCATE 14,6:PRINT "KALO"
266 LOCATE 24,6:PRINT "PASXA"
270 MOVE 320,200
280 FILL 2
290 MOVE 320,5
300 FILL 3
301 MOVE 320,200
302 FILL 3
303 MOVE 320,5
304 FILL 2
305 MOVE 320,200
306 FILL 3
307 MOVE 320,5
308 FILL 1
310 pencolour=2+RND*13
320 FILL pencolour
330 GOTO 310
340 BORDER 6
Πανάθεμά σε ρε Μήτσο με το σταυρό, σα να βλέπω τάφο είναι! Άσε, θα προτιμήσω την αγγλική σημαία! :lol:
 

sly*m

Retro Addict
Messages
529
Reaction score
1,364
Points
103
Λοιπόν ζήτηθηκε ένα παράδειγμα.

Amstrad Action τεύχος 008 σελίδα σελ 92. Ένα μικρό πρόγραμμα.


View attachment 19484
Atari Basic 8-bit

Κατέβασα τον WinApe και προσπάθησα να κάνω το αποτέλεσμα να μοιάζει.

Το Α8 στα νορμάλ graphics modes δείχνει 4 χρώματα μαζί με το background, ενώ το ντεμάκι του Amstrad έχει συνολικά 8 χρώματα. Έτσι χρησιμοποίησα το GRAPHICS 10 mode που μπορεί να δείξει μέχρι 9. Το 'μειονέκτημα' είναι ότι τα pixels έχουν αναλογία 4:1 και φαίνονται σαν παύλες.

Amstrad1587114792689.png
Atari1587114815461.png

Νομίζω τα REMarks στο Listing δίνουν μια ιδέα. Το πρόγραμμα όταν τελειώσει γυρνάει στον editor πατώντας κάποιο πλήκτρο.

Code:
100 REM *****************************
110 REM IMMITATE AN AMSTRAD DEMO
120 REM SHOULD USE 8 COLORS
130 REM WHERE NORMAL ATARI HAS 4
140 REM *****************************
150 REM GOSUBS
160 CREATESCR=300:CCYKLE=480:WVBL=530
170 REM *****************************
180 REM MAIN
190 GOSUB CREATESCR:COL=1:CENTX=39:CENTY=95:MODX=20:MODY=48:DEG
200 FOR ANG=1 TO 360:X=COS(ANG):Y=SIN(ANG)
210 COLOR COL:PLOT INT(X*CENTX+CENTX),INT(Y*MODY+CENTY):DRAWTO CENTX,CENTY:PLOT INT(Y*MODX+CENTX),INT(X*CENTY+CENTY):DRAWTO CENTX,CENTY
220 COL=COL+1:IF COL=7 THEN COL=1
230 NEXT ANG:FOR Q=1 TO 40:GOSUB CCYKLE:NEXT Q
240 GOSUB CREATESCR:COL=1:FOR X=1 TO 720:Y=SIN(X):COLOR COL:PLOT INT(X*79/720),INT(Y*CENTY+CENTY):DRAWTO CENTX,CENTY
250 COL=COL+1:IF COL=7 THEN COL=1
260 NEXT X:FOR Q=1 TO 40:GOSUB CCYKLE:NEXT Q
270 POKE 764,255
280 IF PEEK(764)=255 THEN GOTO 280
290 POKE 764,255:END
300 REM *****************************
310 REM IMMITATE BLACK PLAYFIELD
320 REM USING XIO FILL
330 GRAPHICS 10
340 REM POKE COLORZ
350 POKE 704,128:REM BLUE BACK
360 POKE 705,64:REM INK 1,4
370 POKE 706,68:REM INK 2,8
380 POKE 707,212:REM INK 3,12
390 POKE 708,40:REM INK 4,16
400 POKE 709,152:REM INK 5,20
410 POKE 710,236:REM INK 6,24
420 POKE 711,0:REM BLACK PLAYFIELD
430 POKE 712,0:REM NOT USED
440 COLOR 7:PLOT 79,191:DRAWTO 79,0:DRAWTO 0,0
450 POSITION 0,191
460 POKE 765,7:XIO 18,#6,0,0,"S:"
470 RETURN
480 REM *****************************
490 REM COLORCYKLE
500 FOR T=1 TO 6
510 GOSUB WVBL:TMP=PEEK(705):POKE 705,PEEK(706):POKE 706,PEEK(707):POKE 707,PEEK(708):POKE 708,PEEK(709):POKE 709,PEEK(710):POKE 710,TMP
520 NEXT T:RETURN
530 REM *****************************
540 TMP=PEEK(20)
550 IF PEEK(20)=TMP THEN GOTO 550
560 RETURN
 

Vincent

Retro Addict
Messages
807
Reaction score
1,615
Points
103
Sorry για το off topic αλλά είναι πολύ cool και δε νομίζω να πορτάρετε, αλλά πάρτε το.

CPC

Code:
1000 MODE 2:DEG:d=&7E00:FOR a=0 TO 359 STEP 2:y=COS(a)*95+95:PLOT a,y*2+18:POKE d,y:d=d+1:NEXT:POKE d,&FF:m=&8000:FOR d=0 TO 1:READ d$:FOR u=1 TO LEN(d$)/2:POKE m,VAL("&"+MID$(d$,(u-1)*2+1,2)):m=m+1:NEXT u,d
1010 CLS:CALL &8000
1020 DATA f32a3800229a8021fbc9223800fb21004206c836542310fbcd19bd76dd21a0803e10f5dd6e00dd6601237efeffc2338021007edd7500dd74015e164221c080010900edb0dd23dd23f13d20d676f3219f002b7cb5c251802100423ec801107f16005e23ed49ed59ed51ed590000060810fe3dc25c80dd21a080
1030 DATA 3e10dd6e00dd66015e164221c980010900edb0dd23dd233d20e8cd09bbd21880210000223800c9007e037e067e097e0c7e0f7e127e157e187e1b7e1e7e217e247e277e2a7e2d7e5c4c4e4a4b53575544545454545454545454
 

dimfil

Retro Mentor
Messages
1,095
Reaction score
1,811
Points
123
Atari Basic 8-bit

Κατέβασα τον WinApe και προσπάθησα να κάνω το αποτέλεσμα να μοιάζει.

Το Α8 στα νορμάλ graphics modes δείχνει 4 χρώματα μαζί με το background, ενώ το ντεμάκι του Amstrad έχει συνολικά 8 χρώματα. Έτσι χρησιμοποίησα το GRAPHICS 10 mode που μπορεί να δείξει μέχρι 9. Το 'μειονέκτημα' είναι ότι τα pixels έχουν αναλογία 4:1 και φαίνονται σαν παύλες.


Νομίζω τα REMarks στο Listing δίνουν μια ιδέα. Το πρόγραμμα όταν τελειώσει γυρνάει στον editor πατώντας κάποιο πλήκτρο.

Code:
100 REM *****************************
110 REM IMMITATE AN AMSTRAD DEMO
120 REM SHOULD USE 8 COLORS
130 REM WHERE NORMAL ATARI HAS 4
140 REM *****************************
150 REM GOSUBS
160 CREATESCR=300:CCYKLE=480:WVBL=530
170 REM *****************************
180 REM MAIN
190 GOSUB CREATESCR:COL=1:CENTX=39:CENTY=95:MODX=20:MODY=48:DEG
200 FOR ANG=1 TO 360:X=COS(ANG):Y=SIN(ANG)
210 COLOR COL:PLOT INT(X*CENTX+CENTX),INT(Y*MODY+CENTY):DRAWTO CENTX,CENTY:PLOT INT(Y*MODX+CENTX),INT(X*CENTY+CENTY):DRAWTO CENTX,CENTY
220 COL=COL+1:IF COL=7 THEN COL=1
230 NEXT ANG:FOR Q=1 TO 40:GOSUB CCYKLE:NEXT Q
240 GOSUB CREATESCR:COL=1:FOR X=1 TO 720:Y=SIN(X):COLOR COL:PLOT INT(X*79/720),INT(Y*CENTY+CENTY):DRAWTO CENTX,CENTY
250 COL=COL+1:IF COL=7 THEN COL=1
260 NEXT X:FOR Q=1 TO 40:GOSUB CCYKLE:NEXT Q
270 POKE 764,255
280 IF PEEK(764)=255 THEN GOTO 280
290 POKE 764,255:END
300 REM *****************************
310 REM IMMITATE BLACK PLAYFIELD
320 REM USING XIO FILL
330 GRAPHICS 10
340 REM POKE COLORZ
350 POKE 704,128:REM BLUE BACK
360 POKE 705,64:REM INK 1,4
370 POKE 706,68:REM INK 2,8
380 POKE 707,212:REM INK 3,12
390 POKE 708,40:REM INK 4,16
400 POKE 709,152:REM INK 5,20
410 POKE 710,236:REM INK 6,24
420 POKE 711,0:REM BLACK PLAYFIELD
430 POKE 712,0:REM NOT USED
440 COLOR 7:PLOT 79,191:DRAWTO 79,0:DRAWTO 0,0
450 POSITION 0,191
460 POKE 765,7:XIO 18,#6,0,0,"S:"
470 RETURN
480 REM *****************************
490 REM COLORCYKLE
500 FOR T=1 TO 6
510 GOSUB WVBL:TMP=PEEK(705):POKE 705,PEEK(706):POKE 706,PEEK(707):POKE 707,PEEK(708):POKE 708,PEEK(709):POKE 709,PEEK(710):POKE 710,TMP
520 NEXT T:RETURN
530 REM *****************************
540 TMP=PEEK(20)
550 IF PEEK(20)=TMP THEN GOTO 550
560 RETURN
Ήμουν σε πολύ λάθος δρόμο με αυτό...
Γενικώς μου (ξανα)έλυσες απορίες και κυρίως μου υπενθύμισες ότι πρέπει να κατανοήσω καλύτερα τις δυνατότητες των graphic modes!

Αν δεν έχεις αντίρρηση, χρησιμοποιώ τα listings σου ως οδηγό για practice μέσω της μεταφοράς τους στην TBXL. Με βοηθάει πολύ καθώς λύνω απορίες επιτόπου.
 

sly*m

Retro Addict
Messages
529
Reaction score
1,364
Points
103
Αν δεν έχεις αντίρρηση, χρησιμοποιώ τα listings σου ως οδηγό για practice
Εννοείται Δημήτρη! Γι αυτό δημοσιεύονται τα listings, για να μελετούνται και να πειραματιζόμαστε, αυτό κάνω και γω.

Για το A8, το Mapping the Atari είναι ο καλύτερος φίλος σου! Όπως και το De Re Atari.

Τσέκαρε και αυτό
 

clemenza

Retro Addict
Messages
966
Reaction score
1,354
Points
93
Sorry για το off topic αλλά είναι πολύ cool και δε νομίζω να πορτάρετε, αλλά πάρτε το.

CPC

Code:
1000 MODE 2:DEG:d=&7E00:FOR a=0 TO 359 STEP 2:y=COS(a)*95+95:PLOT a,y*2+18:POKE d,y:d=d+1:NEXT:POKE d,&FF:m=&8000:FOR d=0 TO 1:READ d$:FOR u=1 TO LEN(d$)/2:POKE m,VAL("&"+MID$(d$,(u-1)*2+1,2)):m=m+1:NEXT u,d
1010 CLS:CALL &8000
1020 DATA f32a3800229a8021fbc9223800fb21004206c836542310fbcd19bd76dd21a0803e10f5dd6e00dd6601237efeffc2338021007edd7500dd74015e164221c080010900edb0dd23dd23f13d20d676f3219f002b7cb5c251802100423ec801107f16005e23ed49ed59ed51ed590000060810fe3dc25c80dd21a080
1030 DATA 3e10dd6e00dd66015e164221c980010900edb0dd23dd233d20e8cd09bbd21880210000223800c9007e037e067e097e0c7e0f7e127e157e187e1b7e1e7e217e247e277e2a7e2d7e5c4c4e4a4b53575544545454545454545454
Εντάξει, απλά απίστευτο.

Αν μπορούμε να το κάνουμε port; Εεεε, χμμμμμ, κάτσε να σου πω... ΟΧΙ! Η, βασικά, ανι, μπορούμε να το μεταφέρουμε και να κάνει τα ίδια POKEs, στις ίδιες διευθύνσεις, αλλά σε άλλο μηχάνημα. Τι λες, θα παίξει; :p
 

dimfil

Retro Mentor
Messages
1,095
Reaction score
1,811
Points
123
Sorry για το off topic αλλά είναι πολύ cool και δε νομίζω να πορτάρετε, αλλά πάρτε το.

CPC

Code:
1000 MODE 2:DEG:d=&7E00:FOR a=0 TO 359 STEP 2:y=COS(a)*95+95:PLOT a,y*2+18:POKE d,y:d=d+1:NEXT:POKE d,&FF:m=&8000:FOR d=0 TO 1:READ d$:FOR u=1 TO LEN(d$)/2:POKE m,VAL("&"+MID$(d$,(u-1)*2+1,2)):m=m+1:NEXT u,d
1010 CLS:CALL &8000
1020 DATA f32a3800229a8021fbc9223800fb21004206c836542310fbcd19bd76dd21a0803e10f5dd6e00dd6601237efeffc2338021007edd7500dd74015e164221c080010900edb0dd23dd23f13d20d676f3219f002b7cb5c251802100423ec801107f16005e23ed49ed59ed51ed590000060810fe3dc25c80dd21a080
1030 DATA 3e10dd6e00dd66015e164221c980010900edb0dd23dd233d20e8cd09bbd21880210000223800c9007e037e067e097e0c7e0f7e127e157e187e1b7e1e7e217e247e277e2a7e2d7e5c4c4e4a4b53575544545454545454545454
Εσένα τώρα αυτό σου θυμίζει Basic Μητσάρα;
 
Top