OVH Cloud OVH Cloud

Langage machine

25 réponses
Avatar
Francois LE COAT
Bonjour,

Lorsque j'avais entre 15 et 20 ans, j'ai programm=E9 sur mon premier
ordinateur personnel, un Sinclair ZX81 avec 16ko de RAM. Je l'ai
programm=E9 en Basic et en langage machine, parce que le premier
programme auquel j'ai eu affaire =E9tait le "casse-brique" pr=E9sent
dans l'Ordinateur Individuel n=B038 de juin-juillet 1982 =E0 la page 178.=

J'ai d=E9couvert par la suite dans le cours de programmation du ZX81 :

<http://eureka.atari.org/langage_machine.jpg>

C'est-=E0-dire qu'avec l'aide du livre de Rodnay Zaks, j'ai appris
l'assembleur Z80, et la mani=E8re de le transf=E9rer en m=E9moire via
une instruction "REM" contenant le langage machine correspondant.

Il me semble, bien que j'ai programm=E9 en langage machine, qu'il
existait un langage assembleur pour le Sinclair ZX81. J'avais
=E0 ma disposition 1koctet ou 16koctets de RAM, et j'aurais voulu
savoir quelle =E9tait la quantit=E9 de m=E9moire requise pour le
langage de programmation assembleur ? On pouvait sans doute
programmer en assembleur, mais quelle =E9tait la m=E9moire requise ?

Le langage Basic =E9tait inclus en ROM, mais le langage assembleur
aurait d=FB =EAtre charg=E9 en RAM, ce qui n=E9cessitait beaucoup de RAM
pour pouvoir travailler, non ? J'ai connu des ZX81 avec 64koctets ...

Merci,

--=20
Fran=E7ois LE COAT
<http://eureka.atari.org/>

10 réponses

1 2 3
Avatar
Gzavsnap
Le 13/01/2018 à 08:39, pehache a écrit :
Le 12/01/2018 à 19:30, Francois LE COAT a écrit :
Il me semble, bien que j'ai programmé en langage machine, qu'il
existait un langage assembleur pour le Sinclair ZX81.

Pour info à ceux qui ne pratiquent pas le FLC au jour le jour, voilà ce
qu'il soutenait sur fcsa 2 jours avant :
---------------------------------------------------------------------
Mais Monsieur *****, sur le Sinclair, il n'y avait *pas*
de langage assembleur. C'était le cas de toutes les machines de
cette époque. On programmait en alphanumérique et "langage machine" !
---------------------------------------------------------------------
<p35v1d$15d2$

salut,
Il faut se replacer dans le contexte historique de l'utilisateur.Sur de
nombreuses machines, le Basic a été choisi pour la programmation.
La ROM Basic (La MEM=ROM Moniteur Basic) permettant une utilisation plus
facile de la machine.
Donc, l'utilisateur a été contraint de programmer en Basic.
Mais, peu de temps après la sortie de ces machines, l'utilisateur a été
inondé de programmes rapides et courts à charger.
Il était claire que ces programmes n'étaient pas programmés en Basic car
il était impossible de reproduire une telle vélocité avec ce langage.
Le langage assembleur (ou langage machine) donna une nouvelle vie à
certaines machines tel que le ZX81... avec des jeux plus grand et plus
rapide.
Une nouvelle jeunesse, après une série de jeux médiocres programmés en
Basic.
Et c'était le jour et la nuit!
On découvrait alors un mode de programmation aussi curieux qu'énigmatique.
Saisir une série de codes décimaux ou hexadécimaux permettait de lancer
un jeu...
Avec la curiosité et la littérature de l'époque, de nombreuses personnes
ont explorer ce domaine, avec de couts programmes permettant "d'aider"
le Basic dans les tâches redondantes, mais aussi en programme
entièrement en langage machine.
Mais, effectivement, aucune machine (à part l'Apple 2) ne permettait la
programmation au niveau "machine" en assembleur.
Tous les utilisateurs devait se contenter du bon vieux Basic pour la
programmation.
Et il est vrai que l'entrée des codes se faisaient en "Pokant" les
valeurs de la suite du programme assembleur, les uns à la suite des
autres... tout bêtement!
L'assemblage des codes était marginal, mais de nombreux outils étaient
disponibles à l'époque... pour les passionnés.
Mais, bon nombre d'utilisateur se contentaient de taper une suite
interminable de codes sans avoir idée du résultat final.
C'est une surprise à chaque fois...
Mais, la surprise se méritait... car une seule erreur de saisie pouvait
rendre le programme instable et non fonctionnel!
Un exemple de programme en assembleur, vu du coté utilisateur:
ZX Kong (Olivier ROZE - Hebdogiciel février 1986) :
<http://download.abandonware.org/magazines/Hebdogiciel/hebdogiciel_numero123/22.jpg>
Et le résultat de cette longue liste de nombres...
<http://www.hebdogiciel.free.fr/hd-pictures/zx81/ZX-KONG_5.png>
Avatar
JKB
Le Sat, 13 Jan 2018 09:45:39 +0100,
Francois LE COAT écrivait :
Salut,
Moi c'est un peu pareil. Ça fait pratiquement 30 ans que je n'ai plus
discuté de cela. À 20 ans, après mon expérience en langage machine pour
la programmation du ZX81, j'ai eu affaire à des ordinateurs Hewlett-
Packard professionnels, qui étaient munis de processeurs Intel 8085.
J'ai eu la grande surprise de retrouver le même assembleur (en moins
bien) que pour le Zilog Z80, alors que le Z80 avait une double banque
de registres, et des instructions de duplication mémoire plus avancées.

En même temps, le 8085, hein... J'ai connu beaucoup de CPU, je crois
que le pire 8 bits jamais conçu était bien cette saleté.
En fait, la firme Zilog avait été créée par des anciens ingénieurs de
chez Intel, et l'assembleur Z80 était plus avancé que pour le 8085.
La postérité a donné raison à Intel, et non pas à Zilog, oublié ...

Ce ne sont pas les capacités techniques qui ont fait qu'on se
trimballe les horreurs que sont les x86. Si les techniciens avaient
eu raison, on aurait aujourd'hui les descendants des 6809/6309 ou
68k, voire des processeurs VAX, Sparc ou AXP... Intel a eu deux
chances : sortir le 8086 en deux mois après le plantage de son 32
bits iAPX432 et avoir été choisi par IBM pour des raisons
scabreuses.
J'ai ma réponse grâce à Guillaume, qui me dit qu'il fallait 16koctets.
Si j'avais eu connaissance de l'existence de ce programme assembleur
pour Sinclair ZX81, j'aurais pu sans doute programmer plus efficacement.
Le langage machine était très performant, mais lourd en apprentissage !

Pas tant que ça lorqu'on avait un bon bouquin et un bon assembleur.
Le problème est que les x86 et Z80 n'étaient pas forcément les bons
CPU pour apprendre. Apprendre l'assemblage sur un 6809 était
beaucopu plus simple parce que le CPU avait des instructions rendues
orthogonales. J'ai utilisé ce CPU pour les cours que je donnais
jusqu'en 2010 (depuis, je ne m'occupe plus d'assembleur) avec de
très bons résultats vis à vis des maquettes à base de 8085.
JKB
--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr
=> http://loubardes.de-charybde-en-scylla.fr
Avatar
MOI
Francois LE COAT a utilisé son clavier pour écrire :
Bonjour,
Lorsque j'avais entre 15 et 20 ans, j'ai programmé sur mon premier
ordinateur personnel, un Sinclair ZX81 avec 16ko de RAM. Je l'ai
programmé en Basic et en langage machine, parce que le premier
programme auquel j'ai eu affaire était le "casse-brique" présent
dans l'Ordinateur Individuel n°38 de juin-juillet 1982 à la page 178.
J'ai découvert par la suite dans le cours de programmation du ZX81 :
<http://eureka.atari.org/langage_machine.jpg>
C'est-à-dire qu'avec l'aide du livre de Rodnay Zaks, j'ai appris
l'assembleur Z80, et la manière de le transférer en mémoire via
une instruction "REM" contenant le langage machine correspondant.
Il me semble, bien que j'ai programmé en langage machine, qu'il
existait un langage assembleur pour le Sinclair ZX81. J'avais
à ma disposition 1koctet ou 16koctets de RAM, et j'aurais voulu
savoir quelle était la quantité de mémoire requise pour le
langage de programmation assembleur ? On pouvait sans doute
programmer en assembleur, mais quelle était la mémoire requise ?
Le langage Basic était inclus en ROM, mais le langage assembleur
aurait dû être chargé en RAM, ce qui nécessitait beaucoup de RAM
pour pouvoir travailler, non ? J'ai connu des ZX81 avec 64koctets ...
Merci,

Bonjour,
je ne sais pas ce qu'est un ZX mais je suis très troublé par la
ressemblance avec un apple 2 europlus
ce dernier n'a "que" 48K de RAM, a un langage basic en ROM et il faut
rajouter une carte d'extension de mémoire (total 64K) pour utiliser un
langage tel que le pascal je crois (ces carte s'appelent d'ailleurs
juste pour ça des "langage card")
troublante coincidence, qui a pompé qui ??? >:|
Avatar
Tonton Pinuche
Le 12/01/18 à 23:50, Francois LE COAT a écrit :
C'est à dire qu'avec les 16ko que j'avais à ma disposition j'aurais eu
des difficultés à développer en langage de programmation assembleur ?
Je suppose que le langage assembleur devait être interprété,

non, il (le source) est assemblé via un assembleur pour générér un binaire
Basic résident en ROM. Enfin, je n'en ai pas eu l'usage, peut-être y
en avait-il plusieurs ... En fait, j'assemblais par moi-même, avec
de la documentation sur le Z80, ce qui fait que ma quantité réduite
de mémoire n'était pas un obstacle.

Moi aussi, j'ai assemblé "JP 256" en "C3 00 01"
--
MB: Chez moi, on voussoie les gens qu'on ne connaît pas, d'abord.
JM: C'est parce que tu as un truc qu'il faudrait enlever d'entre
tes fesses.
-+- Guide du Cabaliste Usenet - Rudiments de netiquette -+-
Avatar
Tonton Pinuche
Le 13/01/18 à 02:57, Gzavsnap a écrit :
Avec un programme assembleur en ROM, on ne gagne "que" 4k, mais cela
permettait de coder un peu plus d'un K de plus en assembleur.
Le ratio "mnémonique>compilé" est fluctuant, mais il faut penser au
texte enregistré:
"LD A,10" (rc) soit 8 octets pour un rendu de 3 octets.

non 2 octets : 3E 0AH
--
JYB: Y paraît que si on superpose une gigogne mâle et une gigogne
femelle, ça donne une petite gigogne.
JC: Tsssk, tout le monde sait bien qu'une gigogne, c'est homosexuel !
-+- in: Guide du Cabaliste Usenet - FAQ
fr.reseaux.telecoms.techniques -+-
Avatar
Gzavsnap
"LD A,10" (rc) soit 8 octets pour un rendu de 3 octets.

non 2 octets : 3E 0AH

Bien vu!
Donc, LD HL,10 (rc) est bon dans mon cas...
;)
Avatar
Djamé
Il me semble, bien que j'ai programmé en langage machine, qu'il
existait un langage assembleur pour le Sinclair ZX81.

tu te fous de la gueule de qui? tu nous as soulé toute la semaine
dernière sur fcsa sur la non existence d'un
assembleur sur zx81, c'est d'ailleurs moi qui ai posté le lien et tu
viens ensuite ici faire le kéké ?
Avatar
MOI
Le 13/01/2018, Francois LE COAT a supposé :
Salut,
MOI écrit :
Francois LE COAT a utilisé son clavier pour écrire :
Lorsque j'avais entre 15 et 20 ans, j'ai programmé sur mon premier
ordinateur personnel, un Sinclair ZX81 avec 16ko de RAM. Je l'ai
programmé en Basic et en langage machine, parce que le premier
programme auquel j'ai eu affaire était le "casse-brique" présent
dans l'Ordinateur Individuel n°38 de juin-juillet 1982 à la page 178.
J'ai découvert par la suite dans le cours de programmation du ZX81 :
<http://eureka.atari.org/langage_machine.jpg>
C'est-à-dire qu'avec l'aide du livre de Rodnay Zaks, j'ai appris
l'assembleur Z80, et la manière de le transférer en mémoire via
une instruction "REM" contenant le langage machine correspondant.
Il me semble, bien que j'ai programmé en langage machine, qu'il
existait un langage assembleur pour le Sinclair ZX81. J'avais
à ma disposition 1koctet ou 16koctets de RAM, et j'aurais voulu
savoir quelle était la quantité de mémoire requise pour le
langage de programmation assembleur ? On pouvait sans doute
programmer en assembleur, mais quelle était la mémoire requise ?
Le langage Basic était inclus en ROM, mais le langage assembleur
aurait dû être chargé en RAM, ce qui nécessitait beaucoup de RAM
pour pouvoir travailler, non ? J'ai connu des ZX81 avec 64koctets ...

je ne sais pas ce qu'est un ZX mais je suis très troublé par la
ressemblance avec un apple 2 europlus
ce dernier n'a "que" 48K de RAM, a un langage basic en ROM et il faut
rajouter une carte d'extension de mémoire (total 64K) pour utiliser un
langage tel que le pascal je crois (ces carte s'appelent d'ailleurs
juste pour ça des "langage card")
troublante coincidence, qui a pompé qui ??? >:|

Sur le ZX81 il n'existe pas de cartes d'extensions de langages, mais
un langage supplémentaire qui se charge en mémoire RAM. Il faut
donc avoir suffisamment de mémoire vive. Dans le cas que nous
discutons, il est requis d'avoir au moins 16koctets de RAM pour
y loger l'assembleur. Il me semble qu'avec 16koctets, on ne doit
pas être à même de développer de gros codes en langage machine ...
C'est la réponse à laquelle nous sommes parvenus pour le Sinclair ZX81.
Merci,

peut être une petite incompréhénsion :
sont applelés "langage card" des cartes d'extension de 16K de Ram dans
le but initial de charger un langage. mais ce sont bien des cartes de
pure extension de ram.
cordialement
Avatar
MOI
Francois LE COAT a formulé ce dimanche :
Salut,
MOI écrit :
Francois LE COAT a utilisé son clavier pour écrire :
Lorsque j'avais entre 15 et 20 ans, j'ai programmé sur mon premier
ordinateur personnel, un Sinclair ZX81 avec 16ko de RAM. Je l'ai
programmé en Basic et en langage machine, parce que le premier
programme auquel j'ai eu affaire était le "casse-brique" présent
dans l'Ordinateur Individuel n°38 de juin-juillet 1982 à la page 178.
J'ai découvert par la suite dans le cours de programmation du ZX81 :
<http://eureka.atari.org/langage_machine.jpg>
C'est-à-dire qu'avec l'aide du livre de Rodnay Zaks, j'ai appris
l'assembleur Z80, et la manière de le transférer en mémoire via
une instruction "REM" contenant le langage machine correspondant.
Il me semble, bien que j'ai programmé en langage machine, qu'il
existait un langage assembleur pour le Sinclair ZX81. J'avais
à ma disposition 1koctet ou 16koctets de RAM, et j'aurais voulu
savoir quelle était la quantité de mémoire requise pour le
langage de programmation assembleur ? On pouvait sans doute
programmer en assembleur, mais quelle était la mémoire requise ?
Le langage Basic était inclus en ROM, mais le langage assembleur
aurait dû être chargé en RAM, ce qui nécessitait beaucoup de RAM
pour pouvoir travailler, non ? J'ai connu des ZX81 avec 64koctets ...

je ne sais pas ce qu'est un ZX mais je suis très troublé par la
ressemblance avec un apple 2 europlus
ce dernier n'a "que" 48K de RAM, a un langage basic en ROM et il faut
rajouter une carte d'extension de mémoire (total 64K) pour utiliser un
langage tel que le pascal je crois (ces carte s'appelent d'ailleurs
juste pour ça des "langage card")
troublante coincidence, qui a pompé qui ??? >:|

Sur le ZX81 il n'existe pas de cartes d'extensions de langages, mais
un langage supplémentaire qui se charge en mémoire RAM. Il faut
donc avoir suffisamment de mémoire vive. Dans le cas que nous
discutons, il est requis d'avoir au moins 16koctets de RAM pour
y loger l'assembleur. Il me semble qu'avec 16koctets, on ne doit
pas être à même de développer de gros codes en langage machine ...
C'est la réponse à laquelle nous sommes parvenus pour le Sinclair ZX81.

peut être une petite incompréhénsion :
sont applelés "langage card" des cartes d'extension de 16K de Ram dans
le but initial de charger un langage. mais ce sont bien des cartes de
pure extension de ram.

D'accord. Nous parlons bien de la même chose. D'une extension de RAM
pour pouvoir programmer dans un langage supplémentaire à celui qui
est résident en ROM. Ma question concernait le langage assembleur sur
le Sinclair ZX81.
Merci,

bonjour
mon interrogation initiale portait sur la troublante ressemblance entre
un Apple 2 et un Sinclair...
cordialement
Avatar
Tonton Pinuche
Le 14/01/18 à 13:41, MOI a écrit :
mon interrogation initiale portait sur la troublante ressemblance entre
un Apple 2 et un Sinclair...
cordialement

10 PRINT "il faudrait que tu regardes les photos des deux engins pour
t'apercevoir qu'un ZX80 n'a rien à voir avec un Apple II"
20 PRINT "un ZX80 avec des flopies 5,25 ?? c'est dans la 7ème dimension ???"
30 PRINT "faut arrêter la fumette"
GOTO 10
--
JS: par curiosité, quel matériel il faut avoir pour créer son propre FAI ?
J : Pour créer un FAI comme Havas Off Line, une machine à café suffit,
pour l'assistance technique.
-+- in: Guide du Cabaliste Usenet - Bien configurer sa Hot-Line -+-
1 2 3