- Joined
- Oct 30, 2018
- Messages
- 669
Αυτό είναι ένα πρόγραμμα σε Atari Basic, που φτιάχνει τυχαία σχέδια σε ATASCII σπέσιαλ χαρακτήρες.
Το είχα φτιάξει κάμποσα χρόνια τώρα, αλλά τελευταία πρόσθεσα και τον πολύ απλό "λαβύρινθο" από το 1-liner του Nick Montfort για τον C64.
Υλοποιούνται 6 arrays από ATASCII γραφικούς χαρακτήρες, τα CHARS1$ έως CHARS6$.
Το κάθε ένα έχει τους αντίστοιχους χαρακτήρες για να τυπώσει κάποιο "λαβύρινθο".
Οι χαρακτήρες είναι τα ascii data στις γραμμές 580 για το CHARS1$, 590 για το CHARS2$, έως 630 για το CHARS6$.
Τυπώνονται κάνοντας κατ' ευθείαν poke στην ram της οθόνης, γι αυτό όταν διαβάζονται στα arrays προστίθεται το 64 (γραμμές 210 έως 260), εκτός από την CHARS5$ που έχει μόνο το space και το 'inverse video' του και στην screen ram έχουν τιμές 0 και 128.
Στην 190 βρίσκουμε την διεύθυνση του Display List, που μας δείχνει την διεύθυνση της οθόνης, γραμμή 200.
Επειδή δείχνουμε 6 διαφορετικά arrays, η τυχαία ανάκτηση των χαρακτήρων που έχει το κάθε ένα υλοποιείται ξεχωριστά σε 3 γραμμές αντίστοιχα: 390-400-410 για την CHARS1$, 420-430-440 για την CHARS2$ κλπ.
Το πρόγραμμα τρέχει σε λούπα (γραμμή 270 έως 360).
Κάθε φορά, καλεί τυχαία μία από τις 6 ανακτήσεις χαρακτήρων και η κλήση υπολογίζεται στην γραμμή 300. Επίσης κάθε φορά αλλάζει το inverse video, γραμμή 270, που προστίθεται στις τιμές των ATASCII, για να κάνει την απεικόνιση λίγο πιο ενδιαφέρουσα.
Ο "λαβύρινθος" του Nick Montfort υλοποιείται στο array CHARS6$.

Οι χαρακτήρες του CHARS1$.

Οι χαρακτήρες του CHARS2$.

Οι χαρακτήρες του CHARS3$.

Οι χαρακτήρες του CHARS4$.

Οι χαρακτήρες του CHARS5$.

Οι χαρακτήρες του CHARS6$.
Το text αρχείο "RNDCHARS.LST" μπορεί να φορτωθεί από τους emulators του 8-bit Atari. Θα πρέπει να σβηστεί η επέκταση ".TXT" πρώτα.
Στήνουμε έναν σκληρό δίσκο από φάκελο, ρυθμίζουμε τον emulator να κοιτάει και το device "H" στον φάκελο του Pc και κάνουμε enter το LST στην basic, από το device "Η6".

Ελπίζω να διασκεδάσει όποιον το τρέξει!
Edit: Επισύναψα και to Basic πρόγραμμα, το RNDCHARS.BAS.zip, ώστε όποιος έχει 8μπιτο Atari και τρόπο να το περάσει (sio2sd, sio2usb, sio2arduino κλπ) να μπορεί να το τρέξει στο real μηχάνημα.
Code:
100 REM *************************
110 REM * RANDOM CHARS PATTERNS *
120 REM * BY SLY*M *
130 REM *************************
140 DIM CHARS1$(10),CHARS2$(4),CHARS3$(6),CHARS4$(4),CHARS5$(2),CHARS6$(2)
150 GRAPHICS 0
160 RANDOM=53770
170 PREVLINE=0
180 POKE 710,0
190 DL=PEEK(560)+PEEK(561)*256
200 SCR=PEEK(DL+4)+PEEK(DL+5)*256
210 FOR T=1 TO 10:READ A:CHARS1$(T)=CHR$(A+64):NEXT T
220 FOR T=1 TO 4:READ A:CHARS2$(T)=CHR$(A+64):NEXT T
230 FOR T=1 TO 6:READ A:CHARS3$(T)=CHR$(A+64):NEXT T
240 FOR T=1 TO 4:READ A:CHARS4$(T)=CHR$(A+64):NEXT T
250 FOR T=1 TO 2:READ A:CHARS5$(T)=CHR$(A):NEXT T
260 FOR T=1 TO 2:READ A:CHARS6$(T)=CHR$(A+64):NEXT T
270 INV=INV+128
280 IF INV>128 THEN INV=0
290 SEED=PEEK(RANDOM)
300 LINE=INT(RND(SEED)*6)*30+390:IF LINE=PREVLINE THEN GOTO 300
310 PREVLINE=LINE
320 FOR T=0 TO 40*24-1
330 R=RND(SEED)
340 GOSUB LINE
350 NEXT T
360 GOTO 270
370 END
380 REM *****************************
390 R=INT(R*10)+1
400 POKE SCR+T,ASC(CHARS1$(R))+INV
410 RETURN
420 R=INT(R*4)+1
430 POKE SCR+T,ASC(CHARS2$(R))+INV
440 RETURN
450 R=INT(R*6)+1
460 POKE SCR+T,ASC(CHARS3$(R))+INV
470 RETURN
480 R=INT(R*4)+1
490 POKE SCR+T,ASC(CHARS4$(R))
500 RETURN
510 R=INT(R*2)+1
520 POKE SCR+T,ASC(CHARS5$(R))
530 RETURN
540 R=INT(R*2)+1
550 POKE SCR+T,ASC(CHARS6$(R))+INV
560 RETURN
570 REM *****************************
580 DATA 1,3,4,5,17,18,19,23,24,26
590 DATA 2,6,7,14
600 DATA 9,11,12,15,21,25
610 DATA 8,10,136,138
620 DATA 0,128
630 DATA 6,7
Το είχα φτιάξει κάμποσα χρόνια τώρα, αλλά τελευταία πρόσθεσα και τον πολύ απλό "λαβύρινθο" από το 1-liner του Nick Montfort για τον C64.
Υλοποιούνται 6 arrays από ATASCII γραφικούς χαρακτήρες, τα CHARS1$ έως CHARS6$.
Το κάθε ένα έχει τους αντίστοιχους χαρακτήρες για να τυπώσει κάποιο "λαβύρινθο".
Οι χαρακτήρες είναι τα ascii data στις γραμμές 580 για το CHARS1$, 590 για το CHARS2$, έως 630 για το CHARS6$.
Τυπώνονται κάνοντας κατ' ευθείαν poke στην ram της οθόνης, γι αυτό όταν διαβάζονται στα arrays προστίθεται το 64 (γραμμές 210 έως 260), εκτός από την CHARS5$ που έχει μόνο το space και το 'inverse video' του και στην screen ram έχουν τιμές 0 και 128.
Στην 190 βρίσκουμε την διεύθυνση του Display List, που μας δείχνει την διεύθυνση της οθόνης, γραμμή 200.
Επειδή δείχνουμε 6 διαφορετικά arrays, η τυχαία ανάκτηση των χαρακτήρων που έχει το κάθε ένα υλοποιείται ξεχωριστά σε 3 γραμμές αντίστοιχα: 390-400-410 για την CHARS1$, 420-430-440 για την CHARS2$ κλπ.
Το πρόγραμμα τρέχει σε λούπα (γραμμή 270 έως 360).
Κάθε φορά, καλεί τυχαία μία από τις 6 ανακτήσεις χαρακτήρων και η κλήση υπολογίζεται στην γραμμή 300. Επίσης κάθε φορά αλλάζει το inverse video, γραμμή 270, που προστίθεται στις τιμές των ATASCII, για να κάνει την απεικόνιση λίγο πιο ενδιαφέρουσα.
Ο "λαβύρινθος" του Nick Montfort υλοποιείται στο array CHARS6$.

Οι χαρακτήρες του CHARS1$.

Οι χαρακτήρες του CHARS2$.

Οι χαρακτήρες του CHARS3$.

Οι χαρακτήρες του CHARS4$.

Οι χαρακτήρες του CHARS5$.

Οι χαρακτήρες του CHARS6$.
Το text αρχείο "RNDCHARS.LST" μπορεί να φορτωθεί από τους emulators του 8-bit Atari. Θα πρέπει να σβηστεί η επέκταση ".TXT" πρώτα.
Στήνουμε έναν σκληρό δίσκο από φάκελο, ρυθμίζουμε τον emulator να κοιτάει και το device "H" στον φάκελο του Pc και κάνουμε enter το LST στην basic, από το device "Η6".

Ελπίζω να διασκεδάσει όποιον το τρέξει!
Edit: Επισύναψα και to Basic πρόγραμμα, το RNDCHARS.BAS.zip, ώστε όποιος έχει 8μπιτο Atari και τρόπο να το περάσει (sio2sd, sio2usb, sio2arduino κλπ) να μπορεί να το τρέξει στο real μηχάνημα.
Attachments
Last edited: