- Διακόπτω ευχαρίστως την άμεση ενασχόληση με το "συνδυασμένο
αντικείμενο" των ημερών benchmark-linpack-ow-fortran-compiler-
gettim-assembly-clock-8087-ανάκτηση-της-cpu-μας για να απαντήσω,
αλλά κι έτσι να τακτοποιήσω τις σκέψεις μου. Λοιπόν. Number
Crunching, για τις δικές μου ειδικές εφαρμογές, αλλά κι ό,τι
άλλο μπορεί να σκεφθεί να ζητήσει ο καθένας μας για τις δικές
του ειδικές εφαρμογές, μέσα στα πλαίσια βέβαια του δικού μας
μοντέλου λειτουργίας - του κατά τους τερατώδεις υπερυπολογιστές
dedicated - πλην όμως δικού μας ταπεινού pc, με την δική μας
cpu. Και βέβαια έτσι είναι όπως τα λέτε: Απλό ! : ) Και πρέπει
να επιδιώξουμε να το κρατήσουμε, το όλο εγχείρημα, πραγματικά
απλό. Να μην μπλέξουμε παραπάνω από όσο ακριβώς χρειάζεται. Πώς;
Πρώτα να ξεφορτωθούμε αμέσως το εντελώς άχρηστο για τον σκοπό
μας οποιοδήποτε λειτουργικό σύστημα
--
κι όχι να συνεχίσουμε στο διηνεκές να ψάχνουμε ένα κατάλληλο
ή να καθίσουμε να σκεφτόμαστε πως να στήσουμε κι άλλο ένα,
ακόμα ένα, λειτουργικό αφού τα διαθέσιμα που υπάρχουν ή που
πρόκειται να υπάρξουν όλο και θα κρατούν κάποιο δικαίωμα
αποκλειστικότητας, για την εντελώς ουτοπική πια σήμερα για τους
συντάκτες τους αλλά και αδιάφορη για εμάς κερδοσκοπική τους
εκμετάλλευση
--
αφού το όποιο αυτό δεν μας χρειάζεται μιας και επιβαρύνει τις δικές
μας ειδικές εφαρμογές μας με ελέγχους ξένους προς αυτές - διάβαζε
διακοπές - της καλής λειτουργίας τους = Κι η προηγούμενη κατεύθυνσή
μου; - Παντελώς Λάθος! Δικό μου. Ώστε για αυτό λοιπόν είναι που
χανόμουν, δεν μπορούσα να προχωρήσω βήμα, απελπιζόμουν, και τα
παρατούσα. Επειδή τόσα χρόνια βασιζόμουν, με την ακλόνητη
πεποίθηση μου, αυτή του ημιμαθούς, στην ορθότητα της γνώμης της
πλατιάς πλειοψηφίας, μαζί με την οποία, όλοι μας μαζί, πιστεύαμε
την ασύστολη φαντασμαγορική κερδοσκοπική διαφήμιση πως ναι είναι
δυνατόν να έχουμε πολλές γενικές εφαρμογές - συνηθέστατα του
τύπου "για τραλαλά" (τραγούδια, βιντεοκλιπς, τηλεσαχλαμάρες,
φέσιμπουκσ, τέτοια) - να τρέχουν τάχα-δήθεν "όλες τους μαζί"
μέσα σε λειτουργικό σύστημα μόλτι-τάσκιν. Μού πήρε βέβαια χρόνια
για να απαλλαγώ από αυτή την δηλητηριώδη - όπως όλες οι
υποβολιμαίες - ιδέα που μου τριβέλιζε το μυαλό. Οπότε, εντάξει,
δεν λέω, τα κατάφερα κάποια στιγμή και το ξεφορτώθηκα αυτό το
μόλτι-. Οπότε : σινγκλ ή μόνο. Κι έκανα κι ένα βήμα παραπάνω.
Έκοψα κι όλα τα περιττά περιφερειακά και κράτησα - πάντα μέσα
στο μυαλό μου βέβαια : ) - μόνον τα εντελώς απαραίτητα από αυτά
πληκτρολόγιο-οθόνη-φλόπι. Αλλά παρέμεινα και πάλι κομφορμίστας,
στην αναζήτηση πάντα κάποιου λειτουργικού συστήματος. Αυτές τις
μέρες όμως εκεί που πάλευα με το linpack benchmark μου ήρθε -
είχε φαίνεται ωριμάσει - καιρός ήταν : ) - το πράγμα : Η φλασιά.
Μωρέ και δεν τα πετάμε κι αυτά τα τρία 3 και στην θέση τους να
βάλουμε το εξής ένα 1, το απλούστερο δυνατόν communication
interface, που από μετά από όλα όσα αναφέρατε για τα όργανα
μετρήσεων και μετά το θυμήθηκα πως δεν είναι βέβαια το ieee-488
/hp-ib των οργάνων αυτοματοποιημένων μετρήσεων της HP, Agilent
και σήμερα Keysight που κάθισε και έμαθε η Νικολίτσα πριν από 20
χρόνια : ) αλλά ίσως μπορεί να είναι το γνωστό μας, από τις
ημέρες του bbc-b πριν από 35 χρόνια, RS-232 στο COM/AUX port σε
χρήση ασύγχρονης επικοινωνίας, που από ό,τι συνακόλουθα επίσης
θυμήθηκα το χρησιμοποιούσαν και για τον εντοπισμό βλαβών στα pc
*
πριν βέβαια καταργήσουν και αυτή την Εργασία και την
υποβαθμίσουν σε εκείνη του ανακυκλωτή
--
αυτού του σημερινού δήθεν απαραίτητου, μετά την επιβληθείσα
μαζικώς, από την καταιγιστική διαφήμιση, επίσης τραλαλά, μαζική
αντίληψη της υπεροχής του κάθε νέου προϊόντος επί του
οποιουδήποτε παλαιού
--
δουλειά του οποίου είναι στην πραγματικότητα η καταστροφή του
κάθε παρελθόντος = Ναι, ωραία, αλλά αν ξεφορτωθούμε το σύστημα,
πού θα στήνουμε την κάθε μια δική μας ειδική μας εφαρμογή; - Νέα
φλασιά : σε άλλον υπολογιστή με μολτι σύστημα = Σε assembly;
- Δύσκολο, όχι αδύνατον, αλλά όχι πρώτης προτεραιότητας - είπαμε:
απλότητα = Οπότε; - Με γλώσσα high level = Interpreted;
- Αδύνατον. Θα θέλει το σύστημά της για να εμφανίσει το
περιβάλλον της = Με interpreter που να βγάζει εκτελέσιμο; - Θα
θέλει το σύστημά του για να τρέξει = Με compiler; Δεν θα βγάλει
εφαρμογή που θα θέλει το σύστημά της; = Ναι, αλλά εάν, αφού την
βγάλει, πετάξουμε από αυτήν έξω αυτά τα παραπάνω που της
προσθέτει ο compiler, οπωσδήποτε μπροστά της και ενδεχομένως και
πίσω της, γιατί τα απαιτεί το σύστημα στο οποίο προορίζεται να
τρέξει, για να μπορέσει αυτή εκεί μέσα του να τρέξει; Τότε
εντάξει. Καθότι αυτό ακούγεται εύκολο γιατί εύκολα βρίσκεις που
είναι η αρχή και το τέλος της εφαρμογής κι έτσι ίσως μπορείς να
το κάνεις ακόμα και με το χέρι, με έναν hex editor. = Με εκείνα
όμως που θα φωνάζουν το σύστημα και θα είναι σκόρπια μέσα της;
Πώς θα τα βρίσκεις, και το κυριότερο τι θα τα κάνεις; - Ε, έτσι
ήταν που ξανακόλλησε το πράγμα. Μέχρι τώρα, που λόγω linpack
benchmark, αφενός έπιασα να μελετήσω, ομολογουμένως για πρώτη
φορά στα "εντελώς σοβαρά", τον user guide της owf77 v1.9
--
με την ευκαιρία: για όποιον δεν θέλει να εγκαταστήσει το ow v1.9
για να βρει τα - ομολογουμένως εντυπωσιακά, πάρα πολλά - manuals
της, το user' guide της v1.9 είναι σχεδόν σελίδα-σελίδα το ίδιο
με εκείνο της v1.8:
http://ftp.openwatcom.org/manuals/current/fuguide.pdf
- όπου εκεί, εδώ και καιρό, λέει εκεί current αλλά δεν είναι -
αφού υπάρχει μόνον μια προσθήκη για τα long file names LFN under
DOS που παρεμβάλλεται ως παράγραφος A.2 στην p.199, πράγμα που
επιφέρει μια μετατόπιση κατά +1 στην αρίθμηση των επόμενων
παραγράφων μέχρι την Α.20, που γίνεται Α.21, αλλά και των
σελίδων - κατά 1 μετά την 199, και κατά +2 μετά την 207
--
και αφετέρου βρήκα και εκείνη την Δεύτερη, μετά από εκείνη την
Πρώτη, του 8086, Αρχή του 8087, οπότε, όταν ανακάλυψα - μετά τον
εντοπισμό των links προηγηθέντος μηνύματος για τα clock ticks
και τον επακόλουθο εντοπισμό των εκεί αναφερόμενων σχετικών
σελίδων του ow user's manual - την ουσιαστική χρησιμότητα της
directiv(e)a * p r a g m a * του ow fortran compiler που σου
επιτρέπει να γράφεις assembly, να κάνεις κλήσεις στο DOS και στο
BIOS, για να τα βάζεις όλα αυτά εκεί ακριβώς που θέλεις, μέσα
στον source code σου, της ειδικής εφαρμογής σου, για να
ενσωματωθούν εκεί ακριβώς που πρέπει μέσα στο object σου, είπα :
Αυτό Είναι! Μπορεί λοιπόν να επιχειρηθεί να γίνει αυτό που
θέλουμε = Και ποια θα είναι τα επόμενα βήματα; - Να ψάξω αν ο ow
fortran compiler βγάζει ενδιάμεσο assembly code, όπως δηλαδή
ξέρω πως κάνει ο gnu c compiler με τον -s option του = Γιατί;
- Διότι αυτό θα μας επιτρέψει να ψάχνουμε μέσα στον assembly,
διάβαζε text, κώδικα, της ειδικής μας εφαρμογής - αρχικά με το
χέρι κι ύστερα αυτοματοποιημένα - τις όποιες, ανεξέλεγκτες από
εμάς, κλήσεις προς το λειτουργικό σύστημα και να τις
εξουδετερώνουμε - πρώτα με εκτροπή του κάθε τέτοιου ύποπτου : )
call προς άμεσο return, ή/και με αντικατάσταση των σχετικών
instructions με nop, και ύστερα, αφού ξεθαρρέψουμε "πως δεν
τρέχει τίποτα ", με την πλήρη διαγραφή τους και ενδεχομένως με
διόρθωση των όποιων υπάρχουν - αν υπάρχουν - απόλυτων jump
διευθύνσεων. Αν δεν το κάνει, που μάλλον δεν το κάνει, τότε θα
πρέπει να δω αν μπορώ να αλλάξω - πολύ κακό αυτό - τον ξεκάθαρο
ow compiler με τον χαώδη gnu fortran compiler, και να δω αν
αυτός δέχεται τον τόσο βολικό για το σκοπό μας -s option. Αν δεν
τον δέχεται, τότε θα πρέπει να πάω στην λύση fortran-to-c, και
μετά επί του ό,τι ήθελε έτσι προκύψει : ) από c με -s option σε
assembly - αλλά τότε αναμένεται μάλλον ασυμβατότητα του "ow
pragma" με τα "gnu pragmas", οπότε ελπίζω πως τότε ίσως μπορέσω
να αποκαταστήσω την απώλεια του πλεονεκτήματος "ow pragma", που
ανακαλύψαμε, με κάποιο ισοδύναμο από τα "gnu pragmas". Έτσι θέλω
να ελπίζω : ) - Πέτρος Ζιμουρτόπουλος
* Προσθήκη - 1.10.2017 : πέραν του keyboard port υπό "κρυφή,
εξειδικευμένη λειτουργία", όπως μόλις θυμήθηκα ξαναδιαβάζοντας το
άρθρο της wikipedia για το BIOS:
https://en.wikipedia.org/wiki/BIOS