Win3x.Org

Windows & DOS Community

Le code source du GW-BASIC (1983)

Règles du forum

Pour tout sujet impliquant un système d'exploitation daté de 2000 à nos jours, merci de le publier dans la section intitulée « Informatique moderne ».

Répondre   Page 1 sur 1  [ 5 messages ]
Auteur Message
gm86
Sujet du message : Le code source du GW-BASIC (1983)
Publié : 24 mai 2020 10:18
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 625
Inscription : 01 sept. 2008 19:07
 
Je flânais sur Adafruit Industries, intrigué par un bricolage transformant un casque audio HD-555 en HD-595. J'y vis alors une annonce plus importante :
https://devblogs.microsoft.com/commandl ... -gw-basic/
Microsoft a récemment mis en ligne le code source de GW-BASIC, interpréteur BASIC pour compatible PC qui existait en plusieurs versions OEM. Comme l'OAK de MS-DOS il y a quelques années, c'est encore une bonne nouvelle pour les programmeurs !

_________________

C:\ONGRTLNS.W95


Haut
Profil Citer
INDEPTEKNO
Sujet du message : Re: Le code source du GW-BASIC (1983)
Publié : 24 mai 2020 10:22
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 809
Inscription : 04 déc. 2007 16:51
PC Rétro : COMPAQ PRESARIO 486SX25
 
Intéressant je vais allez voir !

j'ai déjà les code source de Qbasic ,Msdos1 ,Msdos2 ,Msdos3 ,Msdos6 ,Turbo Pascal 6 (Unitée ,Compilateur ,et Éditeur)

sa me fera une source en plus .

_________________

Fan des Vieux PC et Vieux Système d'exploitation et Vieux logiciel.

« Là où règne le désespoir, j’apporte l’espoir. Là où règne la tristesse, j’apporte la joie. Permet-moi de consoler plutôt que d’être consolée, de comprendre plutôt que d’être comprise, d’aimer, plutôt que d’être aimée. Car, donner c’est recevoir, c’est en pardonnant que nous sommes pardonnés, c’est en mourant que nous naissons à la vie éternelle. »


Haut
Profil Citer
gm86
Sujet du message : Re: Le code source du GW-BASIC (1983)
Publié : 24 mai 2020 11:16
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 625
Inscription : 01 sept. 2008 19:07
 
J'avais désassemblé le BASIC-86 pour MS-DOS afin de le débogguer. Par la suite, je me suis aidé du code source du BASIC-80 pour peaufiner. À présent, la version 8086 est enfin disponible pour boucler le projet suivant :
viewtopic.php?style=&f=14&t=19163
On voit bien que le fichier GWINIT.ASM n'était qu'une traduction du code 8080 en code 16 bits : usage répétitif des registres 8 bits et de la macro INS86 pour l'inclusion d'instructions 8086.

Note : les fichiers .H et ceux sans extension doivent être réenregistrés (WORDPAD puis Ctrl-S). En effet, ils sont au format texte d'Unix. Néanmoins, il est surprenant que seul MASM 2.00 d'IBM (1984) puisse assembler le gros fichier GWMAIN.ASM.
En outre, les fichiers MATH?.ASM sont à concaténer ; leur syntaxe correspond à une version antérieure de MASM.

P.S. : MASM 1.06 reconnaît la même syntaxe de langage que MASM 1.10 sans être à cours de mémoire. On le trouve ici :
https://winworldpc.com/download/d882581 ... 163e9022f0
Si toutefois l'erreur *Out Of Memory* voire un plantage se produisait, consultez le site suivant :
https://slions.net/threads/debugging-ib ... n-1-00.33/
En effet, les premières versions du macro-assembleur Microsoft ne s'attendaient pas à plus de 512 Ko de mémoire conventionnelle.

_________________

C:\ONGRTLNS.W95


Haut
Profil Citer
DoomQuakeKeen
Sujet du message : Re: Le code source du GW-BASIC (1983)
Publié : 06 juin 2020 03:27
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 2525
Inscription : 05 avr. 2012 17:38
PC Rétro : Amstrad PC2086/30 8086 640K RAM 32Mo RLL
 
gm86 a écrit : *  24 mai 2020 11:16
Note : les fichiers .H et ceux sans extension doivent être réenregistrés (WORDPAD puis Ctrl-S). En effet, ils sont au format texte d'Unix.
C'est quelque chose qui me paraît tout à fait normal, il semblerait qu'à l'époque une partie du développement se fasse justement depuis des machines sous UNIX.

_________________

Vérification de l’orthographe pour Mozilla Firefox : http://addons.mozilla.org/fr/firefox/a ... alecte-fr/
Vérification de l’orthographe pour Google Chrome : http://chrome.google.com/webstore/sear ... ecte?hl=fr
modérateur : [b][color=#00AA00][/color][/b]
administrateur : [b][color=#AA0000][/color][/b]
membre : [b][color=#006699][/color][/b]
[ img ]


Haut
Profil Citer
gm86
Sujet du message : Re: Le code source du GW-BASIC (1983)
Publié : 06 juin 2020 18:15
Membre inscrit
Avatar de l’utilisateur
Hors-ligne
 
Messages : 625
Inscription : 01 sept. 2008 19:07
 
Peut-être la version Microsoft d'UNIX... Le problème, sous DOS, est que MASM n'arrive pas inclure ce genre de fichier. Existerait-il alors un outil équivalent sous Xenix ? La fin du fichier GWMAIN.ASM mentionne bien ASM86 :
;
; The reserve word tables have dispatch address the could be external.
; ASM86 can only output external declarations during pass 1, so we
; have to construct a chain of possible externals and check each one.
; The following macro runs through the chain and declares any undefined
; addresses as external :NEAR.  For more information, see the file
; PS1:<BASIC.ASM86>BINTRP.H
;
L'assembleur d'Intel porte le même nom mais n'arrive pas à assembler les fichiers ASM. Ce nom servirait-il alors à éviter la confusion avec le macro-assembleur 8080 ? Il est vrai aussi que la dénomination PS1:<BASIC.ASM86>BINTRP.H fait penser à un chemin traduisible entre différents OS : PS1 désignerait le périphérique de stockage et <BASIC.ASM86> le répertoire (on retrouve ce genre d'appelation à l'intérieur des exécutables MASM.EXE écrits en Pascal).

Le choix de l'assembleur évite la correction des fichiers ASM. Voyons les différences entre deux générations de MASM grâce à un morceau de code bidon :
 The Microsoft MACRO Assembler          (...)
 0100  C5 16 0006	 	start:	lds	dx,dword ptr ds:6
 0104  C5 16 0006	 	 	lds	dx,ds:6	 	;Incorrect si MASM 1.10
 E r r o r   ---	57:Illegal size for item         
 0108  8B 16 0100 R	 	 	mov	dx,start	;Incorrect si MASM 1.25
 010C  BA 0100 R	 	 	mov	dx,offset start
 010F  80 3E 0115 R FF 90	 	cmp	flag1,-1	;MASM 1.10 ajoute 1 NOP
 0115  C3	 	 	 	ret	 	 	;lors de la 2nde passe
  ??	 	 	 	flag1	db	?	 	;seulement : trop tard !
 E r r o r   ---	6:Phase error between passes    
 0117(...)

 The Microsoft MACRO Assembler , Version 1.25   (...)
 0100  C5 16 0006	 	start:	lds	dx,dword ptr ds:6
 0104  C5 16 0006	 	 	lds	dx,ds:6	 	;Incorrect si MASM 1.10
 0108  8B 16 0100 R	 	 	mov	dx,start	;Incorrect si MASM 1.25
 E r r o r   ---	57:Illegal size for item         
 010C  BA 0100 R	 	 	mov	dx,offset start
 010F  80 3E 0115 R FF	 	 	cmp	flag1,-1	;MASM 1.10 ajoute 1 NOP
 0114  C3	 	 	 	ret	 	 	;lors de la 2nde passe
 0115  ??	 	 	flag1	db	?	 	;seulement : trop tard !
 0116(...)
La version 1.25 ne râle que lorsqu'il y a une réelle ambiguïté (l'erreur 6 abusive était la bête noire des néophytes). Hélas ! comme précisé avant-hier, le code source date de la version 1.06, moins gourmande que la suivante et surtout que la précédente. L'assemblage est possible sous DOS. Quant au liage, c'est une autre paire de manches.

Voyons du côté de Xenix. Je sais, par exemple, que le BASIC 5.28 a existé pour cet OS en plus de MS-DOS :
http://www.chiclassiccomp.org/docs/cont ... erence.pdf
Donc, pourquoi pas MASM ? Je trouve un premier lien :
http://www.polarhome.com/service/man/?q ... enix&sf=CP
Puis, un second au sujet du SDS (Software Development System) d'IBM :
http://www.os2museum.com/wp/ibm-xenix-t ... s-forward/
Enfin, une version postérieure de MASM 4.0 pour Xenix, bien documentée par Olivetti, bien que trop récente :
http://ia902801.us.archive.org/6/items/ ... embler.pdf
Par conséquent, le développement sous Xenix est crédible. Cependant, je reste persuadé du contraire.

Merci d'avoir relancé l'intérêt du sujet.

_________________

C:\ONGRTLNS.W95


Haut
Profil
Afficher : Trier par : Ordre :
Répondre   Page 1 sur 1  [ 5 messages ]
Revenir à « Informatique des vieux systèmes »
Aller :