X200, emulation?

Description

Salut a tous.

j'ai ésiter beaucoup avant de déposer cette source
en me demandant les réactions quelles allais causé
vue le contexte.

SI VOUS ETES PROGRAMMEUR EN ASM.. Je NE SUIS PAS SUR QUE VOUS ALLEZ AIMER.

X200 est un "simulateur d'ordinateur" mais il ne simule pas un ordinateur comme vous le connaissez
Le programme consiste a simuler d'une toute autre facon un ordinateur, sans utiliser les standard
Donc, le programme simule la présence d'un processeur (donc d'un "language machine")
d'un disque dur (un fichier)
de memoire "ram"
d'un affichage + "carte" graphique
et je travaille pour d'autres composantes

Je qualifirais aussi ce programme de version vulgarisé d'un ordinateur
Ici je vais l'appeller un simulateur :)

Comme dit plus haut, le simulateur possède un language machine, qui permet
l'execution d'opérations sur la memoire ou autre composantes. j'ai nommé le language LAM
il est très particulier. je m'explique, l'ordinateur simuler n'utilise pas le binaire, cela facilite les operation sur la memoire, les mots-clef utiliser sonts différent de l'assembleur contemporain et certaine je croie, n'onts pas la meme défénition.

J'ai décider de mettre les sources du 'système d'exploitation' pour que vous voyez a quel point je me suis compliquer la vie :)
ATTENTION:
une version BETA du système est incluse dans le Zip. (non-stable et non terminée)
les sources fournis ne vous permetterons pas de crée un nouveau système (la doc est importante ;D )

Source / Exemple :


Voici le code complet de mon Noyeau de système d'exploitation

'MBR
'===
#Chargement des variables basic demandé par le kernel
SET LM,999999999
REG LM,20
REG LM,A0
SET CM,SET LB*100þSET A_X*3þset BM*00000010þint 0hþ
REG CM,FF
#Copie du module EA sur le RAM
SET LM,1998
SET LB,2200
SET BM,00000100
INT 3h
set LM,0
set BM,10000000
int 4h
REG IB,21
#Copie du module SA sur le RAM
SET LM,2198
SET LB,2400
SET BM,00000100
INT 3h
set LM,0
set BM,10000000
int 4h
REG IB,22
#addr du premiere octet du kernel sur le hd
USET CM
USET CB
set LM,698
set BM,00000100
#addr du dernier octet du kernel sur le hd
set LB,2000
int 3h
#Copy du kernel dans CB
get LB,EE
set BM,10000000
int 4h
set AX,3
set BM,00000001
int 0h

'Image Kernel
'============
#Entète de la console.
USET AX
#bugskip
PUSH CM
SET CM,:\\
SET BM,00000010
REG CM,FE
INT 2h
######
SET IB,1
GET CM,23
GET CB,24
GET LM,27
GET LB,28
GET BM,29
GET BB,2A
USET AX
GET IM,C1
GET IB,C2
EQU IM,IB,JMP 1031
#bugskip
USET AX
SET IB,IM
REG IB,C2
GET CB,C0

 #//Code Kernel\\#
SET CM,CB 
 ### Touche pressé, verification de commande

REG CM,FE
SET BM,00000010
INT 2h
RET CM
CMB CB
PUSH CM
NEQU CB,ÿ,JMP 1031
SET CB,CM
EQU CM,loadapp,jmp 800
EQU CM,time,SET CX*CRX200 Time infos.CRCRMemAXTIMECRCR
EQU CM,help,SET CX*CRX200 Help. CRList:CR help     show this helpCR exit     showdown computerCR version  system version.CR
EQU CM,version,SET CX*CRZONESOFT OFFICIAL COMPUTER OPERATING SYSTEMCR
EQU CM,exit,int xh
EQU CM,CB,SET CX*CRUnknown commandCR CR
REG CM,FE
INT 2h
jmp 939
#procedure de lancement d'un application
SET LM,4999
REG LM,A0
SET LM,1
REG LM,A1
REG LM,A2
SET LM,5500
REG LM,A4
SET LM,3000
SET BM,01000011
INT 3h
## Nettoyage ENVIRONEMENT
USET CM
PUSH CM
REG CM,C0
#Code retour
USET CB
JMP 32
 #//Fin code Kernel\\#
#bugskip
REG CM,23
REG CB,24
REG IM,25
REG IB,26
REG LM,27
REG LB,28
REG BM,29
REG BB,2A
REG AX,2B
 #//Modules Multi-tâches\\#
SET LM,1
REG LM,E0
SET BM,01000011
SET LM,2998
INT 3h
 #//Fin des modules\\#
GET CM,C0
NEQU CM,CB,GET I_B*C1
JMP 92

'Module CheckForExecutableBlock
'==============================
# Partie du code KERNEL:
# CheckforExecutableBlock 
# Recherche le programme dans la memoire puis le charge
# 
# Manuel du programme: module.ceb.txt
USER AX
#1.1
GET IM,A1
EQU IM,0,JMP 3492
GET IM,A2
EQU IM,1,JMP 3435
GET LM,A0
#1.2

#1.3
GET LB,A4
SET BM,00000100
INT 3h
#1.4
SET CM,CB
PUSH CM
GET LB,22
SET BM,01000000
INT 4h
SET CM,CB
#1.5
RET CB
CMB CB
GET LB,21
INT 4h
CMB CB
#1.6
SET CB,CM
USET CM
SET BM,10000000
INT 4h
REG IB,A5
#1.7
GET IB,A5
SET BM,00000001
SET AX,2
SET LM,IB
INT 0h
#1.8
RETN

'Module SA (entète d'application ajouté à l'exécution)
'=========
GET AX,30
GET CM,31
GET CB,32
GET IM,33
GET IB,34
GET LM,35
GET LB,36
GET BM,37
GET BB,38

'Module EA (EndApplication, ajouté à la fin du programme lors de l'éxecution)
'=========
REG AX,30
REG CM,31
REG CB,32
REG IM,33
REG IB,34
REG LM,35
REG LB,36
REG BM,37
REG BB,38
RETN

'Module KILL
'===========
 /*\ EN COUR DE CONSTRUCTION /*\

'Programme Scandisk (pour le ram, pas terminé)
'==================
#Vérification des donnée disque
USET AX
SET LM,0
SET IM,15
SET LB,15
#Point de départ
USET AX
GET LM,BA
ADD LM,16
EQU LM,32768,GET LX*2C
EQU LM,32768,SET BX*01000011
EQU LM,32768,INT 3h
REG LM,BA
SET BM,00000011
INT 3h
EQU CM,NULL,SET LX*65535
NEQU CM,NULL,SET LX*65280
SET AX,LM
INC IM
EQU IM,106,INC L_B
EQU IM,106,SET IX*15
SET LM,IM
SET BM,00000101
INT 2h
#end scandisk

Conclusion :


La source est peux commenté désoler

j'ai mis le niveau a 3 parce que il y'a beaucoup beaucoup de code (environs 10 000 lignes)
et vous verrez bien...

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.