Autore Topic: [plus/4] Esperimenti In Linguaggio Macchina...  (Letto 1999 volte)

francesco p.

  • Visitatore
[plus/4] Esperimenti In Linguaggio Macchina...
« il: 23 Agosto 2010, 16:35:09 »
 Buongiorno a tutti,

vi rubo soltanto un momento per lasciare sul forum una piccola richiesta di aiuto, per quanto riguarda la programmazione in linguaggio macchina, dal momento che (come autodidatta purtroppo...) dopo quasi vent' anni, ho deciso di tentare di entrare negli angoli nascosti del mio primo computer, ancor prima di avere il Commodore 64, ossia il Commodore Plus/4... ho pensato di aprire questo topic nel caso in cui ci sia qualcuno qui che sia esperto di linguaggio macchina e volesse essere cosi' gentile da darmi un piccolo chiarimento...

Come appunto dicevo, sto tentando di capire qualcosa della programmazione in linguaggio macchina sul Plus/4 e ho tentato di produrre qualcosa, finora senza successo... in particolare, ero curioso di capire come si generasse il pattern a barre orizzontali alternate che accomuna un po' tutti i computer a 8 bit di casa Commodore, sto parlando per l' esattezza di questo disegno qui...



... che si ottiene digitando GRAPHIC 1 sul Plus/4 e sul Commodore 128 oppure POKE 53272,44 sul Commodore 64...

Ora, un amico che ho conosciuto anch' egli su internet mi ha dato una breve spiegazione di cosa queste barre rappresentano e qual e' la loro traduzione in linguaggio macchina, spero di scrivere bene quanto segue perche' ripeto sono alle primissime armi: questo pattern lo si trova nella memoria del Plus/4 all' indirizzo $1C00 come punto di partenza, ed e' un insieme di istruzioni "00" (BRK) che generano le barre nere, e "FF" (???) che invece generano quelle in colore verde chiaro... lui mi ha suggerito di aprire il programma del linguaggio macchina del TED ed effettivamente mi sono trovato avanti, disassemblando e visualizzando il contenuto della memoria da $1C00 in poi, una successione di istruzioni FF e BRK... vi lascio una schermata per farvi vedere cio' che ho fatto...



(qui se ho ben capito dovrebbe essere la prima barra nera che parte dall' inizio dello schermo in alto a sinistra...)

e a seguire...



(qui dovrebbe essere l' inizio della prima barra di colore verde chiaro...)

Ora, la domanda che mi pongo io e alla quale sto cercando di trovare una risposta e' questa: se io agissi su questa parte di memoria iniziando ad assemblare a partire dalla porzione di memoria che inizia da $1C00, magari alternando combinazioni di 00 e FF, sarei in grado di modificare l' immagine del pattern oppure e' solo una mia idea che non si puo' realizzare ???? (ad esempio, inserendo continuamente in tutta la parte interessata delle istruzioni BRK, in teoria dovrei ottenere uno schermo nero invece del pattern stesso, ma non ne sono sicuro...)

Vi ringrazio per la pazienza che avete avuto nel leggere questa mia richiesta, nel caso voleste darmi una risposta vi sarei piu' che grato di vero cuore !!!!

Un abbraccio !!!!
francesco
 

tsm_carmine

  • Redazione
  • Utente
  • ****
  • Post: 513
  • Gioco Preferito: Krakout
[plus/4] Esperimenti In Linguaggio Macchina...
« Risposta #1 il: 23 Agosto 2010, 17:40:15 »
 
Citazione da: "francesco p."
se io agissi su questa parte di memoria iniziando ad assemblare a partire dalla porzione di memoria che inizia da $1C00, magari alternando combinazioni di 00 e FF, sarei in grado di modificare l' immagine del pattern oppure e' solo una mia idea che non si puo' realizzare ???? (ad esempio, inserendo continuamente in tutta la parte interessata delle istruzioni BRK, in teoria dovrei ottenere uno schermo nero invece del pattern stesso, ma non ne sono sicuro...)
Ciao Francesco, mi permetto di risponderti pur non essendo espertissimo della materia. Per riempire quella zona della memoria con dei numeri, la maniera più semplice è un ciclo di POKE in basic. Puoi anche farlo in assembler: ti scrivi un programmino (in un altra zona della memoria, eh!) che scrive dei valori a partire da quella locazione. Non vedo perché mettersi ad assemblare una sfilza di istruzioni tutte uguali. Ho provato con le POKE ed effettivamente si può cambiare il colore di ogni carattere secondo il valore che si va a scrivere in una certa locazione. La risposta è sì.
Riusciremo a costruire un mondo dove più nessuno osi pronunciare le parole... "lettore floppy"?

eregil

  • Administrator
  • Utente
  • *****
  • Post: 706
  • Gioco Preferito: Impossible Mission
[plus/4] Esperimenti In Linguaggio Macchina...
« Risposta #2 il: 23 Agosto 2010, 17:52:29 »
 Confermo che nella pagina grafica non si deve assemblare o disassemblare nulla, la cosa non ha senso: occorre semplicemente operare sui singoli bit. Se non avete familiarità con il concetto di bitmap, è il momento di chiarirselo.

Per muovere i primi passi posso consigliare ad esempio la lettura di CCC n. 28, pagina 35 e successive (l'articolo è per il C64 ma i concetti sono gli stessi sugli altri 8-bit Commodore, semplicemente le POKE saranno inadeguate).
 
Non rispondo a richieste private, di qualunque genere esse siano.
Per domande tecniche leggete le FAQ e usate l'apposito forum.
Per questioni amministrative contattate lo staff tramite il form Contatti sul sito.

francesco p.

  • Visitatore
[plus/4] Esperimenti In Linguaggio Macchina...
« Risposta #3 il: 24 Agosto 2010, 00:32:14 »
 Grazie per le vostre risposte, siete stati gentilissimi...

Un abbraccio ancora !!!!

Luca/FIRE

  • Utente
  • **
  • Post: 136
    • http://fire.plus4.net
  • Gioco Preferito: Wizball
[plus/4] Esperimenti In Linguaggio Macchina...
« Risposta #4 il: 11 Settembre 2010, 17:04:32 »
 Francesco ma allora sei tu che scrivi queste cose sulla pagina wiki riguardo al Plus/4! :o
Io non son voluto intervenire, ma insomma questa storia dei pattern (e non dei "patterns") è una problematica, permettimi di essere duro, assolutamente irreale! Allo shutoff queste macchine resettano la RAM, all'accensione lo stato della RAM sarà come ha deciso il costruttore, e nel caso del Plus/4 la RAM sarà piena di $00 $00 $FF $FF. Se la vedi in bitmap ci saranno appunto 2 linee di 8 pixel tutte vuote e 2 tutte piene. Ed ecco i tanto fantasticati pattern.
Non solo, ma alcuni modelli di Plus/4 avevano una diversa "accensione", tant'è vero che se hai dato un occhio alle opzioni nello YAPE, nel menu /configuration ti permette di emulare anche gli altri due tipi di RAM reset meno diffusi.
Insomma via, non mi pare una cosa da scrivere su Wikipedia, ed estesamente poi! :)

Se posso, penso che lo stesso si debba dire (non so ancora se sei stato tu eh, quindi parlo in genere!)  per l'uso del tempo imperfetto ("La schermata di presentazione del Commodore Plus/4 era molto simile a quella del Commodore 16", perché ora non lo è più?), o per l'inserimento esteso di note di una certa inutilità (l'analisi prolissa di un caricamento errato?) o addirittura sballati ("Va detto però che a volte, se per esempio era in esecuzione un programma molto "grosso", nel caso in cui si volesse resettare il computer agendo sul pulsante di reset e non spegnendolo e riaccendendolo, alla successiva schermata di presentazione anche il Plus/4 dichiarava 12277 e non 60671 bytes liberi", cosa? Ma no cosa dici, non dipende da quello, non si inseriscono le supposizioni in Wikipedia!).
Cioè, per dire: hai spiegato che se in Monitor inserisci una riga, poi premendo invio ne immetti un'altra col numero successivo (ma insomma, calma!), hai detto che la durata della nota è immessa in millisecondi da 0 a 65535 (ma no, sono solo i valori possibili, ma non sono millisecondi! Verificalo da te con una durata di 1000 e non ti durerà un secondo ma decine di secondi!), e potrei andare avanti per ore!

Ora, stiamo calmi: il tuo affetto verso la macchina è una cosa fantastica, per la quale non ti si ringrazierà mai abbastanza. Se accetti un consiglio, e se davvero sei stato tu (sta cosa dei "patterns" mi ha acceso la spia!), io ti consiglierei di provvedere ad una DECISA ripulita (supposizioni, programmini in basic, esempi alla cieca e così via) di quella pagina Wiki che ora parla, non so, forse di religione, forse di bonsai, non so più... :D

Un salutone!

PS: ah se poi non eri tu, ci penso io con queste possenti mani, altro ché ;)

francesco p.

  • Visitatore
[plus/4] Esperimenti In Linguaggio Macchina...
« Risposta #5 il: 11 Settembre 2010, 21:09:12 »
 Ciao Luca !!!!

innanzitutto, ti volevo ringraziare della tua spiegazione nella prima parte del messaggio, riguardante il perche' della generazione del pattern... so che forse mi sono incaponito su un argomento forse di minore importanza, te ne do' atto, pero' la curiosita' di capire cosa esattamente generasse quel disegno, visto che spesso e volentieri mi si presentava davanti mentre ero intento a giocare o a tentare di programmare qualcosa era fin troppo forte e mi ha accompagnato fino ad ora... se posso aggiungere, avevo notato le altre due modalita' di reset della Ram proprio per mezzo di Yape e devo ammettere che mi avevano sorpreso.

Per trasparenza e correttezza, volevo anche aggiungere che nella pagina wiki dedicata al Plus/4, ho scritto l' introduzione del paragrafo dedicato al pattern, da "Alcuni utenti" fino a "barre in reverse" e ho aggiunto qualche informazione qua e la', che ho provveduto a togliere se non e' pertinente o se e' approssimativa.

Al di la' di tutto, ti ringrazio ancora per la spiegazione. Ripeto, e' forse un argomento che non ha importanza, ma per me l' aveva e come! :)

Ricambio il saluto e ci aggiungo anche un abbraccio! :)