Το 16colo.rs, εχει προσβαση και μεσω ftp, οπου έχει τα αρχεια και συμπιεσμενα σε packs, αλλα και ασυμπιεστα (raw). Το λεω πληροφοριακα, για πιθανό επόμενο projectΠροβολή συνημμένου 245146
Ο διερμηνευτής ξεπέρασε τα 1000 downloads στο φόρουμ του flat assembler. Συγκίνηση on.
Προβολή συνημμένου 245148
To coffee project της ημέρας.
Ένας ANSI viewer γραμμένος στην Hobby BASIC 1.4.3.
Εισαγωγή.
To 16color.rs φιλοξενεί χιλιάδες εικόνες ANSI σε φακέλους χρονολογικά, παράδειγμα ο φάκελος 1990.
Σκοπός μου να γράψω έναν viewer που θα μπορεί να φορτώσει απευθείας τις ANSI εικόνες που βρίσκονται ανεβασμένες στην εν λόγω ιστοσελίδα. Θα μπορεί όμως να λειτουργήσει και offline, φορτώνοντας εικόνες από τον φάκελο ART της Hobby BASIC.
Δοκιμές.
To screenshot είναι από τον κώδικα της σελίδας 1990. Βλέπω πως η σελίδα για την εικόνα AKO.ANS είναι η /PACK/1990/AKO.ANS
Προβολή συνημμένου 245124
Επισκέφτηκα την σελίδα και είδα πως ο απευθείας σύνδεσμος (direct link) της εικόνας είναι ελαφρά διαφορετικός pack/1990/raw/AKO.ANS
Δοκιμάζω τον σύνδεσμο, φορτώνω την εικόνα στην κονσόλα.
Κώδικας:screen 80,30,300 color 0,7 cls ansi "https://16colo.rs/pack/1990/raw/AKO.ANS" inkey end
Προβολή συνημμένου 245128
Δοκιμάζω τώρα να "κλέψω" όλους τους συνδέσμους τύπου .ANS από την σελίδα 1990 και να τους σώσω σε ένα αρχείο κειμένου. Η σελίδα περιέχει περίπου 440 διπλούς συνδέσμους, άρα κοντά 220 αρχεία .ANS.
Κώδικας:src$ = GETSRC("https://16colo.rs/pack/1990/") links$ = EXTRACT(src$,".ans") if LEN(TRIM(0,links$) > 0) save "links.txt",links$ endif
Προβολή συνημμένου 245130
Το πρόγραμμα.
O Viewer φορτώνει εικόνες από 6 διαφορετικούς φακέλους του 16color.rs. Μπορούν φυσικά να προστεθούν και άλλοι. Μπορεί να τις αναπαράγει τυχαία ή σε σειρά. Περιλαμβάνει μερικό έλεγχο λαθών και κάνει skip στα διπλά ονόματα. Παίζει αυτόματα σαν slideshow ή manual κάνοντας skip στην επόμενη πατώντας κάποιο πλήκτρο (ή το Esc και στις 2 περιτπώσεις). Αποθηκεύει αντίγραφο κάθε εικόνας που φορτώνει στον φάκελο ART της Hobby BASIC. Πριν φορτώσει κάθε εικόνα, πρώτα ελέγχει αν υπάρχει ήδη κατεβασμένη και την φορτώνει από τον σκληρό δίσκο κάνοντας την εναλλαγή αυτόματα από online σε offline. Μπορεί ακόμα να δουλέψει μόνο offline φορτώνοντας τις εικόνες που θα βρει μέσα στον φάκελο ART.
Άφησα το πρόγραμμα να τρέξει κάμποση ώρα σε Windows 10 αλλάζοντας που και που τις παραμέτρους του. Δεν είδα κάποιο πρόβλημα, χωρίς όμως αυτό να αποκλείεται. Θα το ενσωματώσω στα παραδείγματα σε μια επόμενη έκδοση του διερμηνευτή.
Κώδικας:rem AVIEW.BAS rem Hobby Basic Interpreter rem ANSI Text File Viewer (requires an internet connection) AUTO_PLAY = 1 RANDOM_ORDER = 1 TEXT_SPEED = 2 OFFLINE = 0 url$ = "https://16colo.rs/pack/" numOfFolders = 6 dim folder$[numOfFolders] = "1990", "ansipics", "eansis", "1991", "aaa-8991", "ensiart" if RANDOM_ORDER then folder$[].SHUFFLE view 11 screen 80,50 cursor 0,0 color 0,7 cls ? "ANSI Text File Viewer for Hobby Basic" art_path$ = PATH("ART\") if CHDIR(art_path$,0) = -1 ? "Can''t find ART folder" pause end endif if OFFLINE ? "AVIEW is running offline" exec "dir /b *.ans",tmp$ tmp$ = TRIM(0,tmp$) goto split_links endif index = -1 next_folder# index = (index+1) % numOfFolders folder_path$ = url$ + folder$[index] + "/" raw_path$ = folder_path$ + "raw/" ? "Loading source from ",folder_path$ src$ = GETSRC(folder_path$) if V0 <> 1 ? "Can''t open URL" wait 2000 goto next_folder endif tmp$ = TRIM(0,EXTRACT(src$,".ans")) if LEN(tmp$) = 0 ? "Can''t find any .ANS links in folder ",folder$[index] wait 2000 goto next_folder endif split_links# numOfLinks = SPLIT(tmp$,CHR(13),-1) if numOfLinks = 0 ? "Splitting links to array failed" wait 2000 if ~OFFLINE then goto next_folder else pause : end endif ? numOfLinks," links found with extension .ANS" : wait 500 dim list$[numOfLinks+1] SPLIT(tmp$,CHR(13),list$[]) if RANDOM_ORDER then list$[].SHUFFLE x = 0 ansi_viewer# filename$ = RIGHT(TRIM(0,list$[x]),-1) path$ = art_path$ + filename$ if SIZE(path$) = -1 if OFFLINE then goto @f path$ = raw_path$ + filename$ endif if prev_path$ = path$ then goto @f prev_path$ = path$ color 0,7 cls title path$ ansi path$,TEXT_SPEED if KEY(27) then wait 100 : goto @f if AUTO_PLAY then wait 3000 else inkey @@# x = x + 1 : if x < numOfLinks then goto ansi_viewer if ~OFFLINE then goto next_folder else goto ansi_viewer
Προβολή συνημμένου 245151
Κλείνοντας.
Η Hobby BASIC είναι εξ'ολοκλήρου γραμμένη σε 32-bit assembly και Win32 API. Η εντολή ANSI έχει backend έναν handmade loader γραμμένο σε assembly για να μπορεί να φορτώνει γραφικά ANSI στην κονσόλα, η εντολή EXTRACT που ανακτά τους συνδέσμους από μια ιστοσελίδα το ίδιο.
Αν τρέξετε το πρόγραμμα θα σας προσφέρει πολύ όμορφες και νοσταλγικές στιγμές, οι εικόνες ANSI είναι κομμάτι της ιστορίας και εξέλιξης των υπολογιστών.
Εχω φτιάξει κατι αντίστοιχο σε python για την Mystic BBS.
Φοβερη η hobby basic. Μήπως υπάρχει ενδεχόμενο να υπάρξει και σε εκδοση για Linux ;