diff --git a/Graphisme/screenshots/bootnew.jpg b/Graphisme/screenshots/bootnew.jpg deleted file mode 100644 index 6829feb..0000000 Binary files a/Graphisme/screenshots/bootnew.jpg and /dev/null differ diff --git a/Graphisme/screenshots/chargement.jpg b/Graphisme/screenshots/chargement.jpg deleted file mode 100644 index a2d1f35..0000000 Binary files a/Graphisme/screenshots/chargement.jpg and /dev/null differ diff --git a/Graphisme/screenshots/dir.jpg b/Graphisme/screenshots/dir.jpg deleted file mode 100644 index dd8382d..0000000 Binary files a/Graphisme/screenshots/dir.jpg and /dev/null differ diff --git a/Graphisme/screenshots/editeur.jpg b/Graphisme/screenshots/editeur.jpg deleted file mode 100644 index 615ef79..0000000 Binary files a/Graphisme/screenshots/editeur.jpg and /dev/null differ diff --git a/Graphisme/screenshots/gestionnaire.jpg b/Graphisme/screenshots/gestionnaire.jpg deleted file mode 100644 index d1cd94b..0000000 Binary files a/Graphisme/screenshots/gestionnaire.jpg and /dev/null differ diff --git a/Graphisme/screenshots/installation.jpg b/Graphisme/screenshots/installation.jpg deleted file mode 100644 index 66d46f9..0000000 Binary files a/Graphisme/screenshots/installation.jpg and /dev/null differ diff --git a/Graphisme/screenshots/interpreteur.jpg b/Graphisme/screenshots/interpreteur.jpg deleted file mode 100644 index 987f320..0000000 Binary files a/Graphisme/screenshots/interpreteur.jpg and /dev/null differ diff --git a/Graphisme/screenshots/logo.jpg b/Graphisme/screenshots/logo.jpg deleted file mode 100644 index dd30ca1..0000000 Binary files a/Graphisme/screenshots/logo.jpg and /dev/null differ diff --git a/Graphisme/screenshots/pci.jpg b/Graphisme/screenshots/pci.jpg deleted file mode 100644 index 9c4b547..0000000 Binary files a/Graphisme/screenshots/pci.jpg and /dev/null differ diff --git a/Graphisme/screenshots/video.jpg b/Graphisme/screenshots/video.jpg deleted file mode 100644 index 47891f3..0000000 Binary files a/Graphisme/screenshots/video.jpg and /dev/null differ diff --git a/INFORMATIONS.md b/INFORMATIONS.md index 308852e..9f0c775 100644 --- a/INFORMATIONS.md +++ b/INFORMATIONS.md @@ -1,1435 +1,3 @@ ![logo](https://github.com/dahut87/cos2000v1/raw/master/graphisme/logo.png) ## Documentation d'origine (importée) -COS 2000 -Compatible Operating System - - - - Présentation - Comment l’installer - Mode d’emploi - Faire un programme pour COS - Liste des APIs - Détail des APIs - En cas de problème - - mailto:nicolas@palon.fr - - -Présentation - - COS2000, par définition, est système d'exploitation. Celui-ci prend la direction des opérations à partir du moment où le PC est mis sous tension (Après le BIOS). Il gère tous les périphériques rattachés au PC et offre aux programmeurs les moyens de développer des applications compatibles en fournissant des APIs (Application Programming Interface). COS2000 est basé sur un concept particulier qui est d'offrir aux programmeurs un maximum de fonctions intégrées pour faciliter le travail des programmeurs et réduire la taille des programmes. - -Comment l'installer ? - - Pour installer COS2000 : - - Sous dos/windows 9x - - Insérez une disquette 1.44 Mo vierge ou inutile dans votre lecteur. - Lancez le programme SETUP.COM situé dans le dossier de COS2000. -- Si celui ci ne détecte pas d'erreur, COS2000 est installé ! - - - Sous windows NT/Xp - - Insérez une disquette 1.44 Mo vierge ou inutile dans votre lecteur. - Lancez le programme SETUP.EXE situé dans le dossier de COS2000. -- Si celui ci ne détecte pas d'erreur, COS2000 est installé ! - - - Sous Linux - - Insérez une disquette 1.44 Mo vierge ou inutile dans votre lecteur. - Lancez le programme SETUP.SH situé dans le dossier de COS2000. -- Si celui ci ne détecte pas d'erreur, COS2000 est installé ! - - Pour lancer COS2000 : - - Insérez la disquette où COS2000 est installé. - Veillez que dans le BIOS vous puissiez démarrer à partir de A:. - Redémarrer votre ordinateur et vous serez sur COS2000. - - - -Mode d'emploi - - L’interpréteur de commande COS est le premier logiciel qui est lancé au démarrage. A partir de celui-ci vous pouvez exécuter quelques commandes ou logiciels. - -En plus des logiciels, l'interpréteur de commandes peut exécuter 6 commandes : - - QUIT - Quitte l'interpréteur. - - VERS - Donne la version de COS2000. - - CLEAR - Efface l'écran. - - REBOOT - Redémarre le PC. - - CMDS - Donne la liste des commandes disponibles. - - MODE [mode] -Permet de changer de mode vidéo. [mode] doit être un entier compris entre 1 et 9. les modes au delà de 4 sont des modes graphiques à texte émulé. Il est déconseillé de les utiliser car il est parfois impossible de revenir aux modes texte. - - DISK - Permet de lire un support disquette 1.44 Mo au format FAT12. - - CD - Change le dossier actuel vers celui spécifié. - - DIR - Permet de lister le contenu du dossier actuel. - - MEM - Permet de lister le contenu du dossier actuel. - - -Faire un programme pour COS - - Toute contribution à COS 2000 en terme de programme est la bienvenue, un répertoire « contribs » contiendra les programmes des différents contributeurs. Aucune modification a ceux-ci ne sera faire sans l’accord explicite de l’auteur. Pour une contribution écrivez moi a l’adresse mailto:nicolas@palon.fr. - -Pour l’instant il n’y a aucun formatage particulier du code à respecter pour faire un programme pour COS 2000. Il faut pour l’instant seulement un point d’entrée en 0100h comme un .COM de dos, 64 Ko sont donc disponible au programme, la pile utilisé est celle du système d’exploitation, c’est donc le seul segment qui ne sera pas initialisé comme les autres. - - - - - - - - - -Pour clore le programme il suffit de faire un retour far. -Exemple avec un Hello Word. - - Avec tasm - -.model tiny ;model tiny (.com) -.486 ;Pour processeur 80486 -Smart ;Optimisations -.code ;Segment de code - -org 0100h ;Point d’entré en 0100h - -start: - mov ah,0Dh - mov si,offset msg - int 47h ;Afficher le texte (Showstring0) - xor ax,ax - int 16h ;Attendre l’appuie sur une touche - db 0CBH ;retour far - -msg db ‘Hello World’,0 - -end start - - Avec nasm - -[bits 16] ;16 bits -[org 0x0100] ;Point d’entré en 0100h -section .text ;Segment de code - -start: - mov ah,0x0D - mov si,msg - int 0x47 ;Afficher le texte (Showstring0) - xor ax,ax - int 0x16 ;Attendre l’appuie sur une touche - retf ;retour far - -msg db ‘Hello World’,0 - - - Comme vous pouvez le constater l’appel des APIs de Cos se réalise par le biais d’interruptions logiciels dont voici la liste. - -Liste des APIs - -disque.sys : Gestionnaires FAT12 et Disquette -Interruption 48h (Disquette uniquement) - -00h readsector - 01h writesector - 02h verifysector - 03h initdrive - 04h loadfile - 05h compressrle - 06h decompressrle - 07h findfirstfile - 08h findnextfile - 09h getfreespace - 0Ah searchfile - 0Bh getname - 0Ch getserial - 0Dh changedir - 0Eh readcluster - 0Fh writecluster - 10h getdir -11h projfile -11h execfile - -port.sys : Gestionnaires port parallèle -Interruption 0Dh (LPT1) ou 0Fh (LPT2) - -00h getlptin - 01h getlptout - 02h getlptinout - 03h setlptin - 04h setlptout - 05h setlptinout - 06h getlpt - 07h getfirstlpt - 08h setemettor - 09h setreceptor - 0Ah settimeout - 0Bh gettimeout - 0Ch receivelpt - 0Dh sendlpt - 0Eh receivelptblock - 0Fh sendlptblock - 10h receivecommand - 11h sendcommand - -souris.sys : Gestionnaires souris -Interruption 74h (PS/2) - -00h cmdmouse - 01h cmdmouse2 - 02h detectmouse - 03h getmouse - 04h getmousescreen - 05h configmouse - -8259a.sys : Gestionnaires contrôleur d'interruption programmable -Interruption 50h (Maître et esclave) - -00h enableirq - 01h disableirq - 02h readmaskirq - 03h readirr - 04h readisr - 05h installhandler - 06h replacehandler - 07h getint - 08h setint - 09h seteoi - -video.sys : Gestionnaires de la carte vidéo -Interruption 47h (VGA) - -00h setvideomode - 01h getvideomode - 02h cleartext - 03h changefont - 04h loadfont - 05h space - 06h line - 07h showchar - 08h showint - 09h showsigned - 0Ah showhex - 0Bh showbin - 0Ch showstring - 0Dh showstring0 - 0Eh showcharat - 0Fh showintat - 10h showsignedat - 11h showhexat - 12h showbinat - 13h showstringat - 14h showstring0at - 15h setcolor - 16h getcolor - 17h scrolldown - 18h getxy - 19h setxy - 1Ah savescreen - 1Bh restorescreen - 1Ch page2to1 - 1Dh page1to2 - 1Eh xchgPages - 1Fh savepage1 - 20h changelineattr - 21h waitretrace - 22h getinfos - 23h loadbmp - 24h showbmp - 25h viewbmp - 26h savedac - 27h restoredac - 28h savestate - 29h restorestate - 2Ah enablescroll - 2Bh disablescroll - 2Ch showdate - 2Dh showtime - 2Eh showname - 2Fh showattr - 30h showsize - 31h getchar - -mcb.sys : Gestionnaires de mémoire vive -Interruption 49h (MB) - -00h mbinit -01h mbfree -02h mbcreate -03h mbresident -04h mbget -05h mbfind -06h mbchown -07h mballoc -08h mbclean -09h mbfindsb - - -Les possibilités de COS2000 sont aujourd'hui très limitées car il est en cours de développement. - - -Détail des APIs - -- Interruption 48h - -Readsector - - -Lit le secteur CX et le met en ES:DI. Met le flag carry à 1 si erreur. - - - -Paramètres -d’entrée AH=0 -CX -ES -DI - -Données en sortie Flag Carry - -Writesector - - -Ecrit le secteur CX avec les données pointés par DS:SI. Met le flag carry à 1 si erreur. - - -Paramètres -d’entrée AH=1 -CX -DS -SI - -Données en sortie Flag Carry - -Verifysector - - -Vérifie si le secteur CX n’est pas défectueux. Met le flag carry à 1 si erreur et flag equal à 0 si secteur défectueux. - - -Paramètres -d’entrée AH=2 -CX - -Données en sortie Flag Carry -Flag Equal - -Initdrive - - -Fonction initialisant le pilote et le matériel afin d’utiliser ultérieurement les fonctions de disque.sys. Met le flag carry à 1 si erreur. - - -Paramètres -d’entrée AH=3 - - -Données en sortie Flag Carry - -Loadfile - - -Charge le fichier dont le nom est pointé par DS:SI en mémoire dans ES:DI et renvoie le nombre d’octets lu en ECX. Met le flag carry à 1 si erreur. - - -Paramètres -d’entrée AH=4 -DS -SI -ES -DI - -Données en sortie ECX -Flag Carry - -Compressrle - - -Compresse le contenu de la mémoire pointé par DS:SI (selon une méthode RLE) et dont la taille est spécifié par CX. Le résultat sera mis en ES:DI ainsi que la nouvelle taille mémoire (octets) en BP. -Paramètres -d’entrée AH=5 -DS -SI -ES -DI -CX - -Données en sortie - -Decompressrle - - -Décompresse le contenu de la mémoire pointé par DS:SI (selon une méthode RLE) et dont la taille est spécifié par CX. Le résultat sera mis en ES:DI ainsi que la nouvelle taille mémoire (octets) en BP. -Paramètres -d’entrée AH=6 -DS -SI -ES -DI -CX - -Données en sortie - -Findfirstfile - - -Renvoie en ES:DI la première entrée du répertoire courant (format BRUT). Met le flag carry à 1 si erreur. Cette fonction prépare aussi l’usage de la fonction findnextfile. - -Format d’une entrée de répertoire : - -Entries Struc -FileName db 8 dup (0) -FilExt db 3 dup (0) -FileAttr db 0 -FileReserved db 0 -FileTimeCreaMs db 0 ;(*10 ms) -FileTimeCrea dw 0 -FileDateCrea dw 0 -FileDateAcc dw 0 -FileNotused dw 0 -FileTime dw 0 -FileDate dw 0 -FileGroup dw 0 -FileSize dd 0 -Entries Ends - -Paramètres -d’entrée AH=7 -ES -DI - -Données en sortie Flag Carry - -Findnextfile - - -Renvoie en ES:DI l’entrée suivante du répertoire courant (format BRUT). Met le flag carry à 1 si erreur. -Paramètres -d’entrée AH=8 -ES -DI - -Données en sortie Flag Carry - -Getfreespace - - -Renvoie en EDX l'espace disque libre du volume en octets. Met le flag carry à 1 si erreur. -Paramètres -d’entrée AH=9 - -Données en sortie EDX -Flag Carry - -Searchfile - - -Renvois dans ES:DI l’entrée de répertoire du fichier pointé par DS:SI. Met le flag equal a 0 si pas existant. Met le flag carry à un si erreur. -Paramètres -d’entrée AH=10 -DS -SI -ES -DI - - -Données en sortie Flag Equal -Flag Carry - - -Getname - - -Renvois dans ES:DI le nom du support courant. -Paramètres -d’entrée AH=11 -ES -DI - - -Données en sortie - - -Getserial - - -Renvois le numéro de série du support courant en EDX. -Paramètres -d’entrée AH=11 - -Données en sortie EDX - -Changedir - - -Change le répertoire courant a celui dont le nom est pointé par DS:SI. Met le flag carry à un si erreur. -Paramètres -d’entrée AH=13 -DS -SI - -Données en sortie Flag Carry - -Readcluster - - -Lit le cluster (groupe) CX et le met en ES:DI. Met le flag carry à 1 si erreur. -Paramètres -d’entrée AH=14 -ES -DI - -Données en sortie Flag Carry - -Writecluster - - -Ecrit le cluster (groupe) CX avec les données pointés par DS:SI. Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=15 -ES -DI - -Données en sortie Flag Carry - -Getdir - - -Renvoie en ES:DI sous forme de chaîne a zéro terminal le nom du répertoire courant. -Paramètres -d’entrée AH=16 -ES -DI - -Données en sortie - -Projfile - - -Charge le fichier dont le nom est pointé par DS:SI dans un bloc mémoire. Renvoie en ECX le nombre d’octets lus et en ES l’adresse du bloc de mémoire. Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=17 -DS -SI - -Données en sortie ECX -ES -Flag Carry - -Execfile - - -Exécute le fichier dont le nom est pointé par DS:SI. Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=18 -DS -SI - -Données en sortie Flag Carry - -- Interruption 47h - -Setvideomode - - -Fixe le mode vidéo courant a dont le numéro est AL. Met le flag carry à 1 si erreur. - -MODES : -0 -> 40x25x16 couleurs en texte -1 -> 80x25x16 couleurs en texte -2 -> 80x50x16 couleurs en texte -3 -> 100x50x16 couleurs en texte -4 -> 100x60x16 couleurs en texte -5 -> 320x200x256 couleurs en graphique -6 -> 320x400x256 couleurs en graphique -7 -> 320x480x256 couleurs en graphique -8 -> 360x480x256 couleurs en graphique -9 -> 400x600x256 couleurs en graphique - -Les modes sont généralement utilisable avec une carte VGA 256ko, mais la plupart surexploitent le contrôleur vidéo donc ne fonctionne pas toujours. L’utilisation des fonctions caractères est disponible en mode graphique par l’usage de polices émulés mais beaucoup de bugs sont encore présent. - - -Paramètres -d’entrée AH=0 -AL - -Données en sortie Flag Carry - -Getvideomode - - -Retourne le mode vidéo courant a dans AL. - -Paramètres -d’entrée AH=1 - - -Données en sortie AL - -Getvideomode - - -Efface l’écran en mode graphique ou texte. - -Paramètres -d’entrée AH=2 - - -Données en sortie - -Setfont - - -Active la police de numéro CL parmi les 8 disponibles. - -Paramètres -d’entrée AH=3 -CL - -Données en sortie - -Getfont (PAS ENCORE IMPLEMENTE) - - -Récupère en CL le N° de police actif. - -Paramètres -d’entrée AH -CL - -Données en sortie - - -Loadfont - - -Charge une police pointée par DS:SI dans la carte vidéo sous le n° de police BL. La taille en hauteur de la police (en pixel) doit être renseigné dans CL Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=4 -DS -SI -CL - -Données en sortie Flag Carry - -Showspace - - -Affiche un espace à l’écran après le curseur. - -Paramètres -d’entrée AH=5 - - -Données en sortie - -Showline - - -Affiche un retour a la ligne à l’écran après le curseur. - -Paramètres -d’entrée AH=6 - - -Données en sortie - -Showchar - - -Affiche un caractère dont le code ASCII est contenu dans DL à l’écran après le curseur. - -Paramètres -d’entrée AH=7 -DL - -Données en sortie - - -Showint - - -Affiche le nombre entier contenu dans EDX à l’écran après le curseur. - -Paramètres -d’entrée AH=8 -EDX - -Données en sortie - -Showsigned - - -Affiche le nombre entier signé contenu dans EDX à l’écran après le curseur. - -Paramètres -d’entrée AH=9 -EDX - -Données en sortie - -Showhex - - -Affiche le nombre hexadécimal contenu dans EDX et de taille CX bits à l’écran après le curseur. - -Paramètres -d’entrée AH=10 -EDX -CX - -Données en sortie - -ShowBin - - -Affiche le nombre binaire contenu dans EDX et de taille CX bits à l’écran après le curseur. - -Paramètres -d’entrée AH=11 -EDX -CX - -Données en sortie - -ShowString - - -Affiche la chaîne de caractère (type fixe) pointée par DS:SI à l’écran après le curseur. - -Chaîne de type fixe : - -Chaine db 24,‘c un chaine de type fixe’ - -Paramètres -d’entrée AH=12 -DS -SI - -Données en sortie - -ShowString0 - - -Affiche la chaîne de caractère (type zéro terminal) pointée par DS:SI à l’écran après le curseur. - -Chaîne de type zéro terminal: - -Chaine db ‘c un chaine de type zéro terminal’,0 - -Paramètres -d’entrée AH=13 -DS -SI - -Données en sortie - -Showchartat - - -Réalise la même fonction que la fonction showchar en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=14 -DL -BL BH - -Données en sortie - -Showintat - - -Réalise la même fonction que la fonction showint en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=15 -EDX -BL BH - -Données en sortie - -Showsignedat - - -Réalise la même fonction que la fonction showsigned en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=16 -EDX -BL BH - -Données en sortie - -Showhexat - - -Réalise la même fonction que la fonction showhex en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=17 -EDX -CX -BL BH - -Données en sortie - -Showbinat - - -Réalise la même fonction que la fonction showbin en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=18 -EDX -CX -BL BH - -Données en sortie - -Showstringat - - -Réalise la même fonction que la fonction showstring en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=19 -DS -SI -BL BH - -Données en sortie - -Showstring0at - - -Réalise la même fonction que la fonction showstring0 en spécifiant les coordonnées BL (y), BH (x) ou tout devra être affiché. - -Paramètres -d’entrée AH=20 -DS -SI -BL BH - -Données en sortie - -Setcolor - - -Change la couleur courante (attributs) pour les opérations textes a celle spécifié dans CL - -Paramètres -d’entrée AH=21 -CL - -Données en sortie - -Setcolor - - -Récupère dans CL la couleur courante (attributs) pour les opérations textes. - -Paramètres -d’entrée AH=22 - - -Données en sortie CL - -Setstyle (PAS ENCORE IMPLEMENTE) - - -Change le style (transparent ou non) courant pour les opérations graphique a celui spécifié dans CL - -Paramètres -d’entrée AH -CL - -Données en sortie - -Getstyle (PAS ENCORE IMPLEMENTE) - - -Récupère dans CL le style courant (transparent ou non) pour les opérations graphique. - -Paramètres -d’entrée AH - - -Données en sortie CL - -Scrolldown - - -Défile l’écran texte ou graphique de CX caractères vers le haut. - -Paramètres -d’entrée AH=23 -CX - -Données en sortie - -Getxy - - -Renvoie en BH les coordonnées x du curseur texte et en BL les coordonnées y du curseur texte. - -Paramètres -d’entrée AH=24 - - -Données en sortie BH BL - -Setxy - - -Fixe les coordonnées x du curseur texte a BH et les coordonnées y du curseur texte a L. - -Paramètres -d’entrée AH=25 -BH BL - -Données en sortie - -SaveScreen - - -Sauvegarde le contenu de l’écran dans un bloc mémoire appelé /vgascreen lié a l’application appelante. -Paramètres -d’entrée AH=26 - - -Données en sortie - -RestoreScreen - - -Restaure le contenu de l’écran précédemment sauvegardé dans un bloc mémoire. -Paramètres -d’entrée AH=27 - - -Données en sortie - -Page1to2 - - -Copie le contenu de la page vidéo n°1 dans la page vidéo n°2. Ne fonctionne qu’en mode texte. -Paramètres -d’entrée AH=28 - -Données en sortie - -Page2to1 - - -Copie le contenu de la page vidéo n°2 dans la page vidéo n°1. Ne fonctionne qu’en mode texte. -Paramètres -d’entrée AH=29 - -Données en sortie - -Xchgpage - - -Echange le contenu de la page vidéo n°2 dans la page vidéo n°1. Ne fonctionne qu’en mode texte. -Paramètres -d’entrée AH=30 - -Données en sortie - -Savepage1 - - -Sauvegarde le contenu de l’écran dans un bloc mémoire appelé /vgapage1 lié a l’application appelante. -Paramètres -d’entrée AH=31 - -Données en sortie - -Changelineattr (VA ETRE SUPPRIMER) - - -Modifie la couleur de la ligne N°DI a l’écran a celle contenue dans AL. -Paramètres -d’entrée AH=32 -AL -DI - -Données en sortie - -Waitretrace - - -Synchronisation avec la retrace verticale. -Paramètres -d’entrée AH=33 - - -Données en sortie - -Getvgainfos - - -Renvoie un bloc de donnée en ES:DI contenant l'état de la carte graphique. - -lines db 0 -columns db 0 -x db 0 -y db 0 -xy dw 0 -colors db 7 -mode db 0FFh -pagesize dw 0 -pages db 0 -font db 0 -graphic db 0 -xg dw 0 -yg dw 0 -style dw 0 -nbpage db 0 -pagesshowed db 0 -plane db 0 -xyg dw 0 -linesize dw 0 -adress dw 0 -base dw 0 -scrolling db 1 -Paramètres -d’entrée AH=34 -ES -SI - -Données en sortie - -Loadbmppalet - - -Charge la palette (DAC) du BMP pointée par DS:SI. -Paramètres -d’entrée AH=35 -DS -SI - -Données en sortie - -Showbmp - - -Affiche le BMP pointée par DS:SI en X:BX, Y:CX. -Paramètres -d’entrée AH=36 -DS -SI -BX -CX - -Données en sortie - -Viewbmp - - -Affiche le BMP pointée par DS:SI en X:BX, Y:CX avec la préparation de la palette. -Paramètres -d’entrée AH=3 -DS -SI -BX -CX - -Données en sortie - -Savedac - - -Sauvegarde le contenu de la palette (DAC) dans un bloc mémoire appelé /vgadac lié a l’application appelante. -Paramètres -d’entrée AH=38 - - -Données en sortie - -Savedac - - -Restaure le contenu de la palette (DAC) précédemment sauvegardé dans un bloc mémoire. -Paramètres -d’entrée AH=39 - - -Données en sortie - -Savestate - - -Sauvegarde l’etat complet de la carte graphique dans un bloc mémoire appelé /vga lié a l’application appelante. FONCTIONNE PEUT ETRE EN MODE GRAPHIQUE. -Paramètres -d’entrée AH=40 - - -Données en sortie - -Restorestate - - -Restaure l’etat complet de la carte graphique précédemment sauvegardé dans un bloc mémoire. FONCTIONNE PEUT ETRE EN MODE GRAPHIQUE. -Paramètres -d’entrée AH=41 - - -Données en sortie - -EnableScroll - - -Active le défilement automatique de l’écran lors de dépassements. -Paramètres -d’entrée AH=42 - - -Données en sortie - -DisableScroll - - - -Desactive le défilement automatique de l’écran lors de dépassements. -Paramètres -d’entrée AH=43 - - -Données en sortie - -Showdate - - -Affiche la date contenue dans DX à l’écran après le curseur. - -Paramètres -d’entrée AH=44 -DX - -Données en sortie - -Showtime - - -Affiche l’heure contenue dans à l’écran après le curseur. - -Paramètres -d’entrée AH=45 -DX - - -Données en sortie - -Showname - - -Affiche le nom de fichier pointé par DS:SI à l’écran après le curseur. - -Paramètres -d’entrée AH=46 -DS -SI - -Données en sortie - -Showattr - - -Affiche les attributs fichiers contenus dans DL à l’écran après le curseur. - -Paramètres -d’entrée AH=47 -DL - -Données en sortie - -Showsize - - -Affiche le la taille en octets (et multiples) contenue dans EDX à l’écran après le curseur. - -Paramètres -d’entrée AH=48 -EDX - -Données en sortie - -Getchar - - -Renvoie le caractère situé sous le curseur dans DL. - -Paramètres -d’entrée AH=49 - - -Données en sortie DL - -Setxyg (PAS ENCORE IMPLEMENTE) - - -Change les coordonnées du curseur graphique a X:BX,Y:CX. -Paramètres -d’entrée AH -BX CX - -Données en sortie - -Getxyg (PAS ENCORE IMPLEMENTE NI ECRIT) - - -Récupère les coordonnées du curseur graphique a X:BX,Y:CX. -Paramètres -d’entrée AH - - -Données en sortie BX CX - -Showpixel (PAS ENCORE IMPLEMENTE) - - -Affiche un pixel de couleur AL en X:BX,Y:CX. -Paramètres -d’entrée AH -BX CX -AL - -Données en sortie - -Getpixel (PAS ENCORE IMPLEMENTE) - - -Récupère la couleur du pixel en X:BX,Y:CX dans AL. -Paramètres -d’entrée AH -BX CX - - -Données en sortie AL - -- Interruption 49h - -Mbinit - - -Initialise les blocs de mémoire pour une utilisation futur des fonction MBs (inutile car le système le réalise au boot). Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=0 - - -Données en sortie Flag Carry - -Mbfree - - -Libère le bloc de mémoire GS ainsi que tout les sous blocs de mémoire lié (fils). Un bloc de mémoire considéré résident ou un sous bloc résident ne sera pas libéré. Met le flag carry à 1 si erreur. - -Paramètres -d’entrée AH=1 -GS - -Données en sortie Flag Carry - -Mbcreate - - -Crée un bloc de CX caractères (octets) et de nom DS :SI. Retourne en GS le bloc de mémoire alloué et met le flag carry à 1 en cas d’erreur. -Paramètres -d’entrée AH=2 -DS -SI - -Données en sortie GS -Flag Carry - -Mbresident - - -Met le bloc GS en situation de bloc mémoire résident (non libérable). - -Paramètres -d’entrée AH=3 -GS - -Données en sortie - -Mbget - - -Renvoie en GS l’adresse du bloc mémoire situé en CX ème position. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=4 - - -Données en sortie GS -Flag Carry - -Mbfind - - -Renvoie en GS le bloc de mémoire dont le nom correspond a la chaîne de caractère situé en DS:SI. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=5 -DS -SI - -Données en sortie GS -Flag Carry - -Mbchown - - -Change le proprietaire (père) du bloc de mémoire GS a celui precisé par DX. - -Paramètres -d’entrée AH=6 -GS -DX - -Données en sortie Flag Carry - -Mballoc - - -Alloue un bloc de CX caractères (octets) pour le processus (programme) qui le demande. Retourne en GS le bloc de mémoire alloué et met le flag carry à 1 en cas d’erreur. -Paramètres -d’entrée AH=7 -CX - -Données en sortie GS -Flag Carry - -Mbclean - - -Nettoie un peu la mémoire pour fonctionner des blocs de mémoire libre contiguë. Généralement inutile car géré par le systeme. -Paramètres -d’entrée AH=8 - - -Données en sortie Flag Carry - -Mbfindsb - - -Renvoie en GS le sous bloc de mémoire dont le nom correspond a la chaîne de caractère situé en DS:SI et dont le propriétaire est DX. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=9 -DS -SI -DX - -Données en sortie Flag Carry - -- Interruption 74h - -Cmdmouse - - -Envoie une commande AL à la souris via contrôleur clavier -Paramètres -d’entrée AH=0 -AL - -Données en sortie - -Cmdmouse2 - - -Envoie une commande type 2 AL à la souris via contrôleur clavier -Paramètres -d’entrée AH=1 -AL - -Données en sortie - -Detectmouse - - -Détecte et initialise une souris de type PS/2. Met le flag carry à 1 si introuvable. - -Paramètres -d’entrée AH=2 -AL - -Données en sortie Flag Carry - -Getmouse - - -Envoie en BX,CX les coordonnées virtuelles de la souris (respectivement X et Y) ainsi qu’en DL l’état des boutons. - -Paramètres -d’entrée AH=3 - - -Données en sortie BX -CX -DL - -Getmousescreen - - -Envoie en BX,CX les coordonnées écran de la souris (respectivement X et Y) ainsi qu’en DL l’état des boutons. - -Paramètres -d’entrée AH=4 - - -Données en sortie BX -CX -DL - -Configmouse - - -Configure la vélocité de la souris dans CL et dans AH, AL les sphères X et Y. -Paramètres -d’entrée AH=5 -AH AL -CL - -Données en sortie - - - -A suivre pour les autres ressources…. (et avec exemples !) - -En cas de problèmes - - Si des bugs surviennent ou si COS2000 ne veut pas s'installer, veuillez s'il vous plaît m'envoyer un E Mail à : - - mailto:nicolas@palon.fr - -COS2000 n'exploite pas les disques durs, il est donc improbable qu'il altère vos données ! diff --git a/MAKEFILE b/MAKEFILE deleted file mode 100644 index 9ce86cb..0000000 --- a/MAKEFILE +++ /dev/null @@ -1,59 +0,0 @@ -all: - cd lib - make - cd .. - - cd noyau - make - cd .. - - cd install - make - cd .. - - cd commande - make - cd .. - - cd programs - make - cd .. - -install: - if not exist data mkdir data - copy noyau\systeme.sys data - copy noyau\boot.bin data - copy commande\commande.ce data - copy lib\*.lib data - copy programs\*.ce data - copy programs\exem-lib.lib data - copy programs\cos.rip data - copy install\setup.com . - -copy: clean all - copy noyau\systeme.sys b: - copy commande\*.ce b: - copy lib\*.lib b: - copy programs\*.ce b: - copy programs\*.lib b: - -clean: - cd lib - make clean - cd .. - - cd noyau - make clean - cd .. - - cd install - make clean - cd .. - - cd commande - make clean - cd .. - - cd programs - make clean - cd .. \ No newline at end of file diff --git a/SCREENSHOTS.md b/SCREENSHOTS.md deleted file mode 100644 index d4f0e9e..0000000 --- a/SCREENSHOTS.md +++ /dev/null @@ -1,13 +0,0 @@ -![logo](https://github.com/dahut87/cos2000v1/raw/master/Graphisme/logo.png) - -## Copies d'écran de COS2000 -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/bootnew.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/chargement.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/dir.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/editeur.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/gestionnaire.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/installation.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/interpreteur.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/logo.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/pci.jpg) -![screen](https://github.com/dahut87/cos2000v1/raw/develop/Graphisme/screenshots/video.jpg) diff --git a/commande/MAKEFILE b/commande/MAKEFILE deleted file mode 100644 index 88ba04d..0000000 --- a/commande/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: commande.ce - -commande.ce: commande.obj - $(lnk) commande.obj commande.ce - -commande.obj: commande.asm - $(asm) commande.asm - -clean: - del *.obj - del *.ce - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/commande/commande.asm b/commande/commande.asm deleted file mode 100644 index 0c4c802..0000000 --- a/commande/commande.asm +++ /dev/null @@ -1,1191 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\fat.h" -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\pci.h" -include "..\include\cpu.h" - -org 0h - -start: -header exe <,1,0,,,offset imports,,offset realstart> - -realstart: - call [cs:print],offset msginit - xor bp,bp -replay: - call [cs:addline] -noret: - call [cs:addline] - mov di,offset dir - call [cs:getdir],di - call [cs:print],di - call [cs:print],offset prompt - mov di,offset buffer -waitchar: - xor ax,ax - int 16h - call convertfr - cmp ah,59 - jne norr - cmp bp,0 - je waitchar - call [print],[word ptr cs: bp] - call [copy],[word ptr cs: bp],di - call [getlength],di - add di,ax - jmp waitchar -norr: - cmp al,0dh ;entrée - je entere - cmp al,08h ;backspace - je backspace - cmp al,27 ;echap - je escape - cmp al,' ' - jb waitchar - cmp di,offset buffer+256 - je waitchar - mov [di],al - inc di - call [cs:showchar],ax - jmp waitchar -escape: - cmp di,offset buffer - je waitchar - call [cs:getxy] - mov dx,offset buffer - mov cx,di - sub cx,dx - js waitchar - je waitchar - sub ah,cl - mov cl,ah - xor ah,ah - xor ch,ch - call [cs:setxy],cx,ax - mov di,offset buffer - mov [byte ptr di],0 - jmp waitchar -backspace: - cmp di,offset buffer - je waitchar - call [cs:getxy] - dec ah - mov cl,ah - xor ah,ah - xor ch,ch - call [cs:setxy],cx,ax - call [cs:showchar],' ' - call [cs:setxy],cx,ax - dec di - mov [byte ptr di],0 - jmp waitchar -entere: - mov [byte ptr di],0 - cmp di,offset buffer - je noret - mov si,offset temp - call [cs:addline] - call [cs:getitem],offset buffer,si,0,' ' - call [cs:uppercase],si - mov bx,offset commands - xor bp,bp - xor dx,dx -tre: - mov di,[bx] - cmp di,0 - je error - call [cs:evalue],si,di - cmp ax,dx - jb noadd - mov dx,ax - mov bp,bx -noadd: - call [cs:cmpstr],si,di - je strisok - add bx,8 - jmp tre -strisok: - mov di,offset temp - call [cs:copy],offset buffer,di - call [cs:uppercase],di - xor cx,cx - inc cx - call [cs:getpointeritem],di,cx,' ' - mov di,ax - cmp [byte ptr di-1],0 - jne nopod - mov [byte ptr di],0 -nopod: - call [cs:checksyntax],di,[word ptr bx+4],' ' - jc errorprec - mov bx,[bx+2] - call bx - jmp replay -error: - mov di,offset buffer - call [cs:searchchar],di,'.' - je noaddext - call [cs:concat],offset extcom,di -noaddext: - call [cs:execfile],di - jc reallyerror - xor bp,bp - jmp replay -reallyerror: - push [word ptr cs: bp] - push offset error_syntax - call [cs:print] - jmp replay -errorprec: - push offset derror - call [cs:print] - jmp replay - -code_exit: - pop ax - retf - -code_version: - call [cs:print],offset version_text - ret - -version_text db 'Cos 2000 version 1.3.2Fr par \c04MrNop\c07',0 - -code_cls: - call [cs:clearscreen] - ret - -code_reboot: - push 0ffffh - push 00000h - retf - -code_command: - call [cs:print],offset def - mov bx,offset commands -showalls: - push [word ptr bx+4] - push [word ptr bx+6] - push [word ptr bx] - call [cs:print],offset commandes - add bx,8 - cmp [word ptr bx],0 - jne showalls -endoff: - ret - -def db '\c02Liste des commandes internes\l\l\c07',0 -commandes db '%0 \h10:\h12%0 \h70%0\l',0 - -code_detect: - call [cs:print],offset msg_cpu_detect - call [cs:cpuinfo],offset thecpu - call [cs:setinfo],offset thecpu,offset temp - call [cs:print],offset msg_ok2 - push offset temp - xor eax,eax - mov al,[thecpu.family] - push eax - mov al,[thecpu.models] - push eax - mov al,[thecpu.stepping] - push eax - push offset thecpu.names - push offset thecpu.vendor - call [cs:print],offset msg_cpu_detect_inf - call [cs:print],offset msg_pci - call [cs:pciinfo],offset thepci - jc nopci - call [cs:print],offset msg_ok2 - xor eax,eax - mov al,[thepci.maxbus] - push eax - mov al,[thepci.version_minor] - push eax - mov al,[thepci.version_major] - push eax - call [cs:print],offset msg_pci_info - call [cs:print],offset msg_pci_enum - xor bx,bx - xor cx,cx - xor si,si -searchpci: - call [cs:getcardinfo],bx,cx,si,offset temp - jc stopthis - mov al,[(pcidata offset temp).subclass] - push ax - mov al,[(pcidata offset temp).class] - push ax - call [cs:getpcisubclass] - push dx - push ax - mov al,[(pcidata offset temp).class] - xor ah,ah - push ax - call [cs:getpciclass] - push dx - push ax - push 4 - push esi - push 4 - push ecx - push 4 - push ebx - mov ax,[(pcidata offset temp).device] - push eax - mov ax,[(pcidata offset temp).vendor] - push eax - call [cs:print],offset msg_pci_card - inc si - cmp si,7 - jbe searchpci -stopthis: - xor si,si - inc cx - cmp cx,31 - jbe searchpci - xor cx,cx - inc bx - cmp bx,16 - jbe searchpci - jmp next -nopci: - call [cs:print],offset msg_echec2 -next: - call [cs:detectvmware] - jne novirtual - call [cs:print],offset msg_vmware -novirtual: - ret - -thepci pciinf <> -thecpu cpu <> - -msg_ok2 db "\h70 [\c02 Ok \c07]\l",0 -msg_echec2 db "\h70 [\c0CPasser\c07]\l",0 -msg_cpu_detect db "Dectection du processeur",0 -msg_cpu_detect_inf db " -Fondeur : %0\l -Modele : %0\l -Revision : %u\l -Version : %u\l -Famille : %u\l -Technologies: %0\l",0 -msg_pci db "Detection des systemes PCI",0 -msg_pci_info db " -Version : %yB.%yB\l -Numero bus max: %u\l",0 -msg_pci_enum db " -Enumeration des peripheriques PCI:\l" - db " |Vendeur|Modele|Bus |Dev.|Func|Classe.Sous-classe\l",0 -msg_pci_card db " | %hW | %hW |%w|%w|%w|%0P.%0P\l",0 -msg_vmware db "\c04 VMWare a ete detecte !!!\c07\l",0 - -code_mode: - call [cs:gettypeditem],di,0,' ' - and al,1111b - call [cs:setvideomode],ax - call [cs:clearscreen] - ret - -code_dir: - call [cs:getserial] - push eax - mov si,offset nomdisque - call [cs:getname],si - push si - push offset present - call [cs:print] - xor ecx,ecx - mov di,offset bufferentry - call [cs:findfirstfile],di - jc nofiles -go: - push [word ptr (find di).result.fileattr] - push [(find di).result.filesize] - push [(find di).result.filetime] - push [(find di).result.filedate] - push [(find di).result.filetimecrea] - push [(find di).result.filedatecrea] - lea bx,[(find di).result.filename] - push bx - push offset line - call [cs:print] - inc ecx - call [cs:findnextfile],di - jnc go -nofiles: - push ecx - push offset filess - call [cs:print] - ret - -nomdisque db 13 dup (0) -bufferentry db 512 dup (0) -present db '\c02Le volume insere est nomme %0, Numero de serie : %hD\l\l',0 - -line db '\c07%n %d %t %d %t %z %a\l',0 -filess db '\l\l\c02%u Fichier(s) au total\l\c07',0 - -code_cd: - call [cs:gettypeditem],di,0,' ' - push ax - push offset changing - call [cs:print] - call [cs:changedir],ax - jnc okchange - push offset errorchanging - call [cs:print] -okchange: - ret - -changing db 'Changement de repertoire vers %0\l',0 -errorchanging db '\c04Impossible d''atteindre ce dossier\c07',0 - -code_kill: - call [cs:gettypeditem],di,0,' ' - push ax - push offset killing - call [cs:print] - call [cs:mbfind],ax - jc nochanged - call [cs:mbfree],ax - jnc okchanged -nochanged: - call [cs:print],offset errorkilling -okchanged: - ret - -killing db 'Fermeture du processus %0\l',0 -errorkilling db '\c04Impossible de fermer ce processus\c07',0 - -code_stack: -push ebp -push esp -push ss -push ss -call [cs:print],offset stackshow -mov cx,12 ;12 derniers éléments -xor esi,esi -mov si,sp -sub si,2*12 -showloop: -push [dword ptr ss:si] -push esi -push ss -push ss -call [cs:print],offset itemshow -inc si -inc si -cmp si,sp -jne notspshow -call [cs:print],offset stresp -notspshow: -cmp si,bp -jne nextshow -call [cs:print],offset strebp -nextshow: -dec cx -jnz showloop -ret - -stackshow db '\l\c02Vidage de la pile systeme\l\l\c07' - db 'Segment SS : 0x%hW\l' - db 'Pointeur ESP : 0x%hD\l' - db 'Pointeur EBP : 0x%hD\l' - db 'Seg :Adr | Donnees',0 -itemshow db '\l0x%hW:0x%hW | 0x%hW',0 - -strebp db '<-- BP',0 -stresp db '<-- SP',0 - -code_dump: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfind - mov fs,ax - dec ax - dec ax - mov gs,ax - cmp [word ptr fs:0x0],'EC' - jne notace2 - push offset oui ;CE? str0 2 - jmp suitelikeace2 -notace2: - push offset non -suitelikeace2: - cmp [word ptr gs:mb.isnotlast],true - je notlast2 - push offset oui ;CE? str0 2 - jmp suitelikelast2 -notlast2: - push offset non -suitelikelast2: - mov dx,gs - push edx ;Emplacement memoire hex 2 -;parent - cmp [gs:mb.reference],0 - jne nextdetect2 - push cs - push offset none ;parent lstr0 2x2 - add bx,[gs:mb.sizes] - jmp suitemn2 -nextdetect2: - mov dx,[gs:mb.reference] - dec dx - dec dx - push dx ;parent lstr0 2x2 - push offset (mb).names -suitemn2: - cmp [gs: mb.isresident],true - jne notresident2 - push offset oui ;resident str0 2 - jmp suitelistmcb2 -notresident2: - push offset non ;resident str0 2 -suitelistmcb2: - xor edx,edx - mov dx,[gs: mb.sizes] - shl edx,4 - push edx - push gs ;nom lstr0 2x2 - push offset (mb).names - push offset dumpshow ;ligne - call [cs:print] - cmp [word ptr fs:0x0],'EC' - jne endofdumpformoment - push [dword ptr fs:exe.starting] - push fs - push fs - push [dword ptr fs:exe.sections] - push fs - push fs - push [dword ptr fs:exe.imports] - push fs - push fs - push [dword ptr fs:exe.exports] - push fs - push fs - cmp [fs: exe.compressed],true - jne notcompressed - push offset oui - jmp suiteiscompressed -notcompressed: - push offset non -suiteiscompressed: - push [dword ptr fs:exe.checksum] - push [dword ptr fs:exe.major] - call [cs:print],offset dumpshowce -endofdumpformoment: - ret -notmbfind: - call [cs:print],offset errornotmbfind - ret - -errornotmbfind db '\c04Impossible de trouver le bloc specifie\l\l\c07',0 - - -dumpshow db '\l\c02Dump du bloc de memoire nomme %0P\l\l' - db '\c02-----------------------------\l' - db '\c02Informations du bloc memoire\c07\l' - db 'Taille du bloc reserve : %u\l' - db 'Bloc resident en memoire : %0\l' - db 'Parent du bloc : %0P\l' - db 'Adresse du bloc memoire : 0x%hW:0x0000\l' - db 'Dernier bloc en memoire : %0\l' - db 'Heberge un format CE : %0\l',0 -dumpshowce db '\c02-----------------------------\l' - db 'Informations du bloc executable\c07\l' - db 'Version de l''executable : %u\l' - db 'Somme de controle : %hD\l' - db 'Compression du code : %0\l' - db 'Exportation de fonctions : 0x%hW:0x%hW\l' - db 'Importation de fonctions : 0x%hW:0x%hW\l' - db 'Sections de donnees : 0x%hW:0x%hW\l' - db 'Point d''entree du code : 0x%hW:0x%hW\l',0 - - -code_sections: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfindssections - jmp haveatargetsections -notmbfindssections: - call [cs:searchfile],di - jc notmbfindall - call [cs:projfile],di - jc notmbfindall - call [cs:mbfind],di - jc notmbfindall -haveatargetsections: - mov fs,ax - cmp [word ptr fs:0x0],'EC' - jne errornotace2 - mov si,[fs:exe.sections] - cmp si,0 - je errornosections - xor edx,edx - call [cs:print],offset rets -showallsections: - add si,4 - push fs - push si - call [cs:print],offset functions - inc edx -findnextsections: - inc si - cmp [byte ptr fs:si],0 - jne findnextsections - cmp [dword ptr fs:si],0 - je finishsections - inc si - jmp showallsections -finishsections: - push edx - call [cs:print],offset allsections - ret - -errornosections: - call [cs:print],offset errornosection - ret - -allsections db '\c02\lIl y avait %u sections dans le bloc ou fichier\l\c07',0 -errornosection db '\c02Aucune section dans le bloc ou fichier\l\c07',0 - -code_exports: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfindsimports - jmp haveatargetexports -notmbfindsexports: - call [cs:searchfile],di - jc notmbfindall - call [cs:projfile],di - jc notmbfindall - call [cs:mbfind],di - jc notmbfindall -haveatargetexports: - mov fs,ax - cmp [word ptr fs:0x0],'EC' - jne errornotace2 - mov si,[fs:exe.exports] - cmp si,0 - je errornoexports - xor edx,edx - call [cs:print],offset rets -showallexports: - push fs - push si - call [cs:print],offset functions - inc edx -findnextexports: - inc si - cmp [byte ptr fs:si],0 - jne findnextexports - add si,3 - cmp [dword ptr fs:si],0 - je finishexports - jmp showallexports -finishexports: - push edx - call [cs:print],offset allexports - ret - -errornoexports: - call [cs:print],offset errornoexport - ret - -allexports db '\c02\lIl y avait %u exportations dans le bloc ou fichier\l\c07',0 -errornoexport db '\c02Aucune exportation dans le bloc ou fichier\l\c07',0 - - -code_imports: - call [cs:gettypeditem],di,0,' ' - call [cs:mbfind],di - jc notmbfindsimports - jmp haveatargetimports -notmbfindsimports: - call [cs:searchfile],di - jc notmbfindall - call [cs:projfile],di - jc notmbfindall - call [cs:mbfind],di - jc notmbfindall -haveatargetimports: - mov fs,ax - cmp [word ptr fs:0x0],'EC' - jne errornotace2 - mov si,[fs:exe.imports] - cmp si,0 - je errornoimports - xor edx,edx - call [cs:print],offset rets -showallimports: - push fs - push si - call [cs:print],offset functions - inc edx -findnextimports: - inc si - cmp [byte ptr fs:si],0 - jne findnextimports - add si,5 - cmp [dword ptr fs:si],0 - je finishimports - jmp showallimports -finishimports: - push edx - call [cs:print],offset allimports - ret - -errornoimports: - call [cs:print],offset errornoimport - ret - -notmbfindall: - call [cs:print],offset errornotmborfilefind - ret - -errornotace2: - call [cs:print],offset errornotcefind - ret - -functions db '%0P\l',0 -rets db '\l\l',0 -allimports db '\c02\lIl y avait %u importations dans le bloc ou fichier\l\c07',0 -errornoimport db '\c02Aucune importation dans le bloc ou fichier\l\c07',0 -errornotcefind db '\c04Le bloc ou le fichier spécifié n''est pas CE\l\c07',0 -errornotmborfilefind db '\c04Impossible de trouver le bloc ou le fichier specifie\l\c07',0 - -code_regs: -call [cs:savecontext],offset allregs -push 6 -push eax -push eax -mov ax,[word ptr allregs.sss] -push 6 -push eax -push eax -mov ax,[word ptr allregs.sgs] -push 6 -push eax -push eax -mov ax,[word ptr allregs.sfs] -push 6 -push eax -push eax -mov ax,[word ptr allregs.ses] -push 6 -push eax -push eax -mov ax,[word ptr allregs.sds] -push 6 -push eax -push eax -mov ax,[word ptr allregs.scs] -xor eax,eax -push 10 -pushd [dword ptr allregs.seip] -pushd [dword ptr allregs.seip] -push 10 -pushd [dword ptr allregs.sesp] -pushd [dword ptr allregs.sesp] -push 10 -pushd [dword ptr allregs.sebp] -pushd [dword ptr allregs.sebp] -push 10 -pushd [dword ptr allregs.sedi] -pushd [dword ptr allregs.sedi] -push 10 -pushd [dword ptr allregs.sesi] -pushd [dword ptr allregs.sesi] -push 10 -pushd [dword ptr allregs.sedx] -pushd [dword ptr allregs.sedx] -push 10 -pushd [dword ptr allregs.secx] -pushd [dword ptr allregs.secx] -push 10 -pushd [dword ptr allregs.sebx] -pushd [dword ptr allregs.sebx] -push 10 -pushd [dword ptr allregs.seax] -pushd [dword ptr allregs.seax] -push 10 -pushd [dword ptr allregs.seflags] -pushd [dword ptr allregs.seflags] -call [cs:print],offset registershow -ret - -registershow db '\l\c02Liste des registres du Microprocesseur\l\l\c07' - db '\c04CPU\h30FPU\c07\l' - db 'EFGS: 0x%hD : %w |\h32ST(0): ??\l' - db 'EAX : 0x%hD : %w |\h32ST(1): ??\l' - db 'EBX : 0x%hD : %w |\h32ST(2): ??\l' - db 'ECX : 0x%hD : %w |\h32ST(3): ??\l' - db 'EDX : 0x%hD : %w |\h32ST(4): ??\l' - db 'ESI : 0x%hD : %w |\h32ST(5): ??\l' - db 'EDI : 0x%hD : %w |\h32ST(6): ??\l' - db 'EBP : 0x%hD : %w |\h32ST(7): ??\l' - db 'ESP : 0x%hD : %w |\h32\l' - db 'EIP : 0x%hD : %w |\h32\l' - db 'CS : 0x%hW : %w |\h32\l' - db 'DS : 0x%hW : %w |\h32\l' - db 'ES : 0x%hW : %w |\h32\l' - db 'FS : 0x%hW : %w |\h32\l' - db 'GS : 0x%hW : %w |\h32\l' - db 'SS : 0x%hW : %w |\h32\l',0 - - -allregs regs <> - -code_irqs: -call [cs:mbfind],offset interruptionbloc -jc erroronint -call [cs:print],offset irqmsg1 -mov es,ax -xor ebx,ebx -intoirq: -xor eax,eax -mov al,[bx+offset irqmap] -mov dx,size ints -mul dx -mov si,ax -pushd [dword ptr es:(ints si).vector1.data.off] -pushd [dword ptr es:(ints si).vector1.data.seg] -call [cs:isrequestirq],bx -jc requested -push ' ' -jmp suiterequested -requested: -push 'X' -suiterequested: -call [cs:isinserviceirq],bx -jc inservice -push ' ' -jmp suiteinservice -inservice: -push 'X' -suiteinservice: -call [cs:isenableirq],bx -jc activatemat -push ' ' -jmp suiteactivatemat -activatemat: -push 'X' -suiteactivatemat: -cmp [es:(ints si).activated],1 -je activate2 -push ' ' -jmp suiteactivate2 -activate2: -push 'X' -suiteactivate2: -cmp [es:(ints si).locked],1 -je verrouille2 -push ' ' -jmp suiteverrouille2 -verrouille2: -push 'X' -suiteverrouille2: -pushd [dword ptr es:(ints si).calledlow] -pushd [dword ptr es:(ints si).calledhigh] -pushd [dword ptr es:(ints si).launchedlow] -pushd [dword ptr es:(ints si).launchedhigh] -push 3 -xor eax,eax -mov al,[bx+offset irqmap] -push eax -push 3 -push ebx -call [cs:print],offset irqmsg2 -inc bl -cmp bl,16 -jb intoirq -ret - - -irqmap db 8,9,10,11,12,13,14,15,0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77 -irqmsg1 db '\l\c02Listes des IRQs\c07\l\l' - db 'IRQ | Int | Appels | Executions |Ver|Act|IMR|ISR|IRR| Vecteur 1 \l',0 -irqmsg2 db '%w | %w | 0x%hW%hD | 0x%hW%hD | %c | %c | %c | %c | %c | 0x%hW:0x%hW\l',0 - -code_int: -call [cs:mbfind],offset interruptionbloc -jc erroronint -mov es,ax -call [cs:gettypeditem],di,0,' ' -xor edi,edi -mov di,ax -mov cx,size ints -mul cx -mov si,ax -pushd [dword ptr es:(ints si).vector8.data.off] -pushd [dword ptr es:(ints si).vector8.data.seg] -pushd [dword ptr es:(ints si).vector7.data.off] -pushd [dword ptr es:(ints si).vector7.data.seg] -pushd [dword ptr es:(ints si).vector6.data.off] -pushd [dword ptr es:(ints si).vector6.data.seg] -pushd [dword ptr es:(ints si).vector5.data.off] -pushd [dword ptr es:(ints si).vector5.data.seg] -pushd [dword ptr es:(ints si).vector4.data.off] -pushd [dword ptr es:(ints si).vector4.data.seg] -pushd [dword ptr es:(ints si).vector3.data.off] -pushd [dword ptr es:(ints si).vector3.data.seg] -pushd [dword ptr es:(ints si).vector2.data.off] -pushd [dword ptr es:(ints si).vector2.data.seg] -pushd [dword ptr es:(ints si).vector1.data.off] -pushd [dword ptr es:(ints si).vector1.data.seg] -pushd [dword ptr es:(ints si).calledlow] -pushd [dword ptr es:(ints si).calledhigh] -pushd [dword ptr es:(ints si).launchedlow] -pushd [dword ptr es:(ints si).launchedhigh] -cmp [es:(ints si).activated],1 -je activate -push offset oui -jmp suiteactivate -activate: -push offset non -suiteactivate: -cmp [es:(ints si).locked],1 -je verrouille -push offset oui -jmp suiteverrouille -verrouille: -push offset non -suiteverrouille: -push esi -push es -push es -push edi -call [cs:print],offset infosint -ret -erroronint: - call [cs:print],offset errorint -okint: - ret - -interruptionbloc db '/interrupts',0 -errorint db '\c04Le gestionnaire d''interruption n''est pas actif\l\c07',0 -infosint db '\c07Le bloc d''interruption est charge en memoire et le gestionnaire est actif\l\l' - db 'Interruption %u\l' - db 'Pointeur : 0x%hW:0x%hW\l\c07' - db 'Active : %0\l' - db 'Verrouillage : %0\l' - db 'Nombre d''appels : 0x%hD%hD\l' - db 'Nombre de lancements : 0x%hD%hD\l' - db '\c02Vecteur 1 : 0x%hW:0x%hW\l' - db 'Vecteur 2 : 0x%hW:0x%hW\l' - db 'Vecteur 3 : 0x%hW:0x%hW\l' - db 'Vecteur 4 : 0x%hW:0x%hW\l' - db 'Vecteur 5 : 0x%hW:0x%hW\l' - db 'Vecteur 6 : 0x%hW:0x%hW\l' - db 'Vecteur 7 : 0x%hW:0x%hW\l' - db 'Vecteur 8 : 0x%hW:0x%hW\l\c07',0 - -code_refresh: - call [cs:initdrive] - jnc okrefresh - call [cs:print],offset errorrefreshing - ret -okrefresh: - call [cs:getserial] - push eax - mov si,offset nomdisque - call [cs:getname],si - push si - push offset present - call [cs:print] - ret - -errorrefreshing db '\c04Impossible de lire le support',0 -extcom db '.CE',0 - - -code_mem: - call [cs:print],offset msg - xor edx,edx - xor ebx,ebx - xor cx,cx -listmcb: - call [cs:mbget],cx - jc fino - mov fs,ax - dec ax - dec ax - mov gs,ax - inc cx - cmp [word ptr fs:0x0],'EC' - jne notace - push offset oui ;CE? str0 2 - jmp suitelikeace -notace: - push offset non -suitelikeace: - mov dx,fs - push edx ;Emplacement memoire hex 2 -;parent - cmp [gs:mb.reference],0 - jne nextdetect - push cs - push offset none ;parent lstr0 2x2 - add bx,[gs:mb.sizes] - jmp suitemn -nextdetect: - mov dx,[gs:mb.reference] - dec dx - dec dx - push dx ;parent lstr0 2x2 - push offset (mb).names -suitemn: - cmp [gs: mb.isresident],true - jne notresident - push offset oui ;resident str0 2 - jmp suitelistmcb -notresident: - push offset non ;resident str0 2 -suitelistmcb: - xor edx,edx - mov dx,[gs: mb.sizes] - shl edx,4 - push 6 ;decimal 4 + type 2 - push edx - push gs ;nom lstr0 2x2 - push offset (mb).names - push offset line2 ;ligne - call [cs:print] - jmp listmcb -fino: - shl ebx,4 - push ebx - push offset fin - call [cs:print] - ret -oui db "oui",0 -non db "non",0 -line2 db "%0P\h15| %w\h24| %0\h30| %0P\h47| 0x%hW\h56| %0\l",0 -fin db "\l\l\c02%u octets de memoire disponible\l\c07",0 -msg db "\l\c02Plan de la memoire\c07\l\lNom | Taille | Res | Parent | Mem | CE \l",0 -none db "?????",0 - - -;converti le jeux scancode/ascii en fr ax->ax -convertfr: - push dx si - mov si,offset fr -searchtouch: - mov dx,[cs: si] - cmp dx,0 - je endofconv - add si,4 - cmp dx,ax - jne searchtouch - mov ax,[cs: si-2] -endofconv: - pop dx si - ret - -fr: db '1', 02, '&', 02 - db '!', 02, '1', 02 - db '2', 03, '‚', 03 - db '@', 03, '2', 03 - db '3', 04, '"', 04 - db '#', 04, '3', 04 - db '4', 05, 39, 05 - db '$', 05, '4', 05 - db '5', 06, '(', 06 - db '%', 06, '5', 06 - db '6', 07, '-', 07 - db '^', 07, '6', 07 - db '7', 08, 'Š', 08 - db '&', 08, '7', 08 - db '8', 09, '_', 09 - db '*', 09, '8', 09 - db '9', 10, '‡', 10 - db '(', 10, '9', 10 - db '0', 11, '…', 11 - db ')', 11, '0', 11 - db '-', 12, ')', 12 - db '_', 12, 'ø', 12 - db 'Q', 16, 'A', 16 - db 'q', 16, 'a', 16 - db 'W', 17, 'Z', 17 - db 'w', 17, 'z', 17 - db '{', 26, '‰', 26 - db '[', 26, 'ˆ', 26 - db ']', 27, '$', 27 - db '}', 27, 'œ', 27 - db 'A', 30, 'Q', 30 - db 'a', 30, 'q', 30 - db ':', 39, 'M', 39 - db ';', 39, 'm', 39 - db 39, 40, '—', 40 - db '"', 40, '%', 40 - db 00, 40, '%', 40 - db '\', 43, '*', 43 - db '|', 43, 'æ', 43 - db 'Z', 44, 'W', 44 - db 'z', 44, 'w', 44 - db 'm', 50, ',', 50 - db 'M', 50, '?', 50 - db ',', 51, ';', 51 - db '<', 51, '.', 51 - db '.', 52, ':', 52 - db '>', 52, '/', 52 - db '?', 53, 'õ', 53 - db '/', 53, '!', 53 - db '\', 86, '<', 86 - db '|', 86, '>', 86 - db 00, 79h, '~', 03 - db 00, 7ah, '#', 04 - db 00, 7bh, '{', 05 - db 00, 7ch, '[', 06 - db 00, 7dh, '|', 07 - db 00, 7eh, '`', 08 - db 00, 7fh, '\', 09 - db 00, 80h, '^', 10 - db 00, 81h, '@', 11 - db 00, 82h, ']', 12 - db 00, 83h, '}', 13 - db 00, 00, 00, 00 - -commands dw str_exit ,code_exit ,syn_exit ,help_exit -dw str_version,code_version,syn_version,help_version -dw str_cls ,code_cls ,syn_cls ,help_cls -dw str_reboot ,code_reboot ,syn_reboot ,help_reboot -dw str_command,code_command,syn_command,help_command -dw str_mode ,code_mode ,syn_mode ,help_mode -dw str_dir ,code_dir ,syn_dir ,help_dir -dw str_refresh ,code_refresh ,syn_refresh ,help_refresh -dw str_cd ,code_cd ,syn_cd ,help_cd -dw str_mem ,code_mem ,syn_mem ,help_mem -dw str_kill ,code_kill ,syn_kill ,help_kill -dw str_int ,code_int ,syn_int ,help_int -dw str_irqs ,code_irqs,syn_irqs ,help_irqs -dw str_regs ,code_regs,syn_regs ,help_regs -dw str_stack,code_stack,syn_stack,help_stack -dw str_dump,code_dump,syn_dump,help_dump -dw str_detect,code_detect,syn_detect,help_detect -dw str_exports,code_exports,syn_exports,help_exports -dw str_imports,code_imports,syn_imports,help_imports -dw str_sections,code_sections,syn_sections,help_sections -dw 0 - -str_exit db 'QUIT',0 -str_version db 'VERS',0 -str_cls db 'CLEAR',0 -str_reboot db 'REBOOT',0 -str_command db 'CMDS',0 -str_mode db 'MODE',0 -str_dir db 'DIR',0 -str_refresh db 'DISK',0 -str_cd db 'CD',0 -str_mem db 'MEM',0 -str_kill db 'KILL',0 -str_int db 'INT',0 -str_irqs db 'IRQS',0 -str_regs db 'REGS',0 -str_stack db 'STACK',0 -str_dump db 'DUMP',0 -str_detect db 'DETECT',0 -str_exports db 'EXPORTS',0 -str_imports db 'IMPORTS',0 -str_sections db 'SECTIONS',0 - -syn_exit db 0 -syn_version db 0 -syn_cls db 0 -syn_reboot db 0 -syn_command db 0 -syn_mode db 'FFh',0 -syn_dir db 0 -syn_refresh db 0 -syn_cd db '?',0 -syn_mem db 0 -syn_kill db '?',0 -syn_int db 'FFh',0 -syn_irqs db 0 -syn_regs db 0 -syn_stack db 0 -syn_dump db '?',0 -syn_detect db 0 -syn_exports db '?',0 -syn_imports db '?',0 -syn_sections db '?',0 - -help_exit db 'Permet de quitter l''interpreteur',0 -help_version db 'Affiche la version de COS',0 -help_cls db 'Efface l''ecran',0 -help_reboot db 'Redemarre l''ordinateur',0 -help_command db 'Affiche le detail des commandes',0 -help_mode db 'Modifie le mode video en cours',0 -help_dir db 'Affiche le contenu du repertoire courant',0 -help_refresh db 'Lit le support disquette insere',0 -help_cd db 'Change le repertoire courant',0 -help_mem db 'Affiche le plan de la memoire',0 -help_kill db 'Termine le processus cible',0 -help_int db 'Affiche des informations sur l''interruption',0 -help_irqs db 'Affiche des informations sur les IRQs',0 -help_regs db 'Affiche les registres du microprocesseur',0 -help_stack db 'Affiche la pile systeme',0 -help_dump db 'Affiche le contenu de la memoire',0 -help_detect db 'Detecte et Affiche les peripheriques PCI et le CPU',0 -help_exports db 'Affiche toutes les exportations du fichier specifie',0 -help_imports db 'Affiche toutes les importations du fichier specifie',0 -help_sections db 'Affiche toutes les sections du fichier specifie',0 - -derror db '\c04Erreur de Syntaxe !',0 -error_syntax db '\c04La commande ou l''executable n''existe pas ! F1 pour %0',0 -prompt db '\c07>',0 -msginit db '\m02\e\c07\l\lInterpreteur de commande COS V1.10\lSous license \c05GPL\c07 - Ecrit par \c04MrNop\l\c07Utilisez la commande CMDS pour connaitres les commandes disponibles\l',0 - - -dir db 32 dup (0) -buffer db 256 dup (0) -temp db 256 dup (0) - -importing -use DETECT.LIB,cpuinfo -use DETECT.LIB,setinfo -use DETECT.LIB,pciinfo -use DETECT.LIB,getcardinfo -use DETECT.LIB,getpcisubclass -use DETECT.LIB,getpciclass -use DETECT.LIB,detectvmware -use VIDEO,clearscreen -use VIDEO,setvideomode -use VIDEO,getxy -use VIDEO,setxy -use VIDEO,addline -use VIDEO.LIB,showhex -use VIDEO.LIB,print -use VIDEO.LIB,showchar -use DISQUE,getdir -use DISQUE,getserial -use DISQUE,getname -use DISQUE,findfirstfile -use DISQUE,findnextfile -use DISQUE,execfile -use DISQUE,initdrive -use DISQUE,changedir -use DISQUE,searchfile -use DISQUE,projfile -use SYSTEME,mbget -use SYSTEME,mbfind -use SYSTEME,mbfindsb -use SYSTEME,mbfree -use SYSTEME,isenableirq -use SYSTEME,isinserviceirq -use SYSTEME,isrequestirq -use SYSTEME,savecontext -use STR0.LIB,uppercase -use STR0.LIB,evalue -use STR0.LIB,copy -use STR0.LIB,checksyntax -use STR0.LIB,searchchar -use STR0.LIB,concat -use STR0.LIB,getitem -use STR0.LIB,cmpstr -use STR0.LIB,getpointeritem -use STR0.LIB,getlength -use STR0.LIB,gettypeditem -endi diff --git a/contribs/MAKEFILE b/contribs/MAKEFILE deleted file mode 100644 index f9193dc..0000000 --- a/contribs/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -lnk_boot = tlink /x -asm= tasm /t/m5/zi -lnk= tlink /x/t - -all: ex-tasm.com ex-nasm.com - -ex-tasm.com: ex-tasm.asm - $(asm) ex-tasm - $(lnk) ex-tasm - ren ex-tasm.com ex-tasm.com - -ex-nasm.com: ex-nasm.asm - nasm ex-nasm.asm -o ex-nasm.com - -clean: - del *.obj - del *.exe - del *.com - del *.sys - del *.err diff --git a/contribs/ex-nasm.asm b/contribs/ex-nasm.asm deleted file mode 100644 index a73f573..0000000 --- a/contribs/ex-nasm.asm +++ /dev/null @@ -1,27 +0,0 @@ -[bits 16] ;16 bits -[org 0x0] ;Point d'entré en 0h -section .text ;Segment de code - -checks db "CE" ;signature de l'exe -major db 1 ;N° version -checksum dd 0 ;Checksum de l'exe -compressed db 0 ;a 1 si compressé par RLE -exports dw 0 ;importation de fonctions -imports dw imported ;exportation de fonctions -sections dw 0 ;sections des blocs mémoire -starting dw realstart - -imported: -db "VIDEO.LIB::print",0 -print dd 0 -endofimport dd 0 - -realstart: - push msg - call far [cs:print] ;Afficher le texte (Showstring0) - xor ax,ax - int 0x16 ;Attendre l'appuie sur une touche - retf ;retour far - -msg db 'Hello World !!',0 - diff --git a/contribs/ex-tasm.asm b/contribs/ex-tasm.asm deleted file mode 100644 index 2c0cc96..0000000 --- a/contribs/ex-tasm.asm +++ /dev/null @@ -1,31 +0,0 @@ -.model tiny ;model tiny (.com) -.486 ;Pour processeur 80486 -Smart ;Optimisations -.code ;Segment de code - -org 0h ;Point d'entré en 0h - -checks db "CE" ;signature de l'exe -major db 1 ;N° version -checksum dd 0 ;Checksum de l'exe -compressed db 0 ;a 1 si compressé par RLE -exports dw 0 ;importation de fonctions -imports dw imported ;exportation de fonctions -sections dw 0 ;sections des blocs mémoire -starting dw realstart - -imported: -db "VIDEO.LIB::print",0 -print dd 0 - -start: - push msg - call far [cs:print] ;Afficher le texte (Showstring0) - xor ax,ax - int 16h ;Attendre l'appuie sur une touche - db 0CBH ;retour far - -msg db 'Hello World !!',0 - -end start - diff --git a/doc_origine.pdf b/doc_origine.pdf deleted file mode 100644 index c610cb9..0000000 Binary files a/doc_origine.pdf and /dev/null differ diff --git a/include/bmp.h b/include/bmp.h deleted file mode 100644 index 02025f7..0000000 --- a/include/bmp.h +++ /dev/null @@ -1,40 +0,0 @@ -struc bmp_file -bmp_filetype db 'bm' -bmp_filesize dd ? ; taille du fichier -bmp_reserved dd 0 ; toujours 0 -bmp_bitmapoffset dd ? ; offset de l'image -bmp_headersize dd ? ; taille de l'entete en octects -bmp_width dd ? ; largeur en pixels de l'image -bmp_height dd ? ; hauteur en pixels de l'image -bmp_planes dw 1 ; nombre de plan utilisés -bmp_bitsperpixel dw ? ; nombre de bits par pixels -bmp_compression dd ? ; méthode de compression -bmp_sizeofbitmap dd ? ; taille de l'image en octects -bmp_horzresolution dd ? ; resolution horizontale en pixels par mètre -bmp_vertresolution dd ? ; resolution verticale en pixels par mètre -bmp_colorsused dd ? ; nombre de couleur dans la palette si 0: palette entière si bitperpixel<=8 -bmp_colorsimportant dd ? ; nombre de couleurs importantes masques pour les modes de plus de 8 bits par pixels -bmp_redmask dd ? -bmp_greenmask dd ? -bmp_bluemask dd ? -bmp_alphamask dd ? -bmp_colorspacetype dd ? -bmp_redx dd ? -bmp_redy dd ? -bmp_redz dd ? -bmp_greenx dd ? -bmp_greeny dd ? -bmp_greenz dd ? -bmp_bluex dd ? -bmp_bluey dd ? -bmp_bluez dd ? -bmp_gammared dd ? -bmp_gammagreen dd ? -bmp_gammeblue dd ? -ends bmp_file - -;bmp_compression peut prendre les valeurs suivantes: -bmp_comp_uncomp equ 0 ; pas de compression -bmp_comp_rle8 equ 1 ; 8-bit run length encoding -bmp_comp_rle4 equ 2 ; 4-bit tun length encoding -bmp_comp_bfe equ 3 ; bitfields encoding diff --git a/include/cpu.h b/include/cpu.h deleted file mode 100644 index e2dbe43..0000000 --- a/include/cpu.h +++ /dev/null @@ -1,20 +0,0 @@ -struc cpu -vendor db 13 dup(0) ;Chaine 0 du fabriquant -names db 32 dup(0) -stepping db 0 -models db 0 -family db 0 -types db 0 -emodels db 0 -efamily db 0 -mmx db 0 -mmx2 db 0 -sse db 0 -sse2 db 0 -sse3 db 0 -fpu db 0 -now3d db 0 -now3d2 db 0 -htt db 0 -apic db 0 -ends cpu diff --git a/include/divers.h b/include/divers.h deleted file mode 100644 index a8e0063..0000000 --- a/include/divers.h +++ /dev/null @@ -1,2 +0,0 @@ -true equ 1 -false equ 0 diff --git a/include/fat.h b/include/fat.h deleted file mode 100644 index 9b5cb56..0000000 --- a/include/fat.h +++ /dev/null @@ -1,61 +0,0 @@ -struc dpt -steprate&headunload db 0DFh ;Vitesse de progression & mont‚e de la tˆte -dmaflag&headload db 002h ;Etat Dma et temps de descente de la tˆte -delaymotoroff db 025h ;Temps avant extinction moteur -bytepersector db 002h ;Taille des secteurs -sectorpertracks db 000h ;Nombre de secteur par piste -intersectgaplength db 01Bh ;Taille du GAP3 en lecture/‚criture -datalength db 0FFh ;Longueur du transfert de donn‚es -intersectgaplengthf db 054h ;Taille du GAP3 en formatage -formatbyte db 0F6h ;Octet de formatage -headsettlingtime db 000h ;Temps de repos des tˆtes -delaymotornormspeed db 008h ;Temps de mont‚e en vitesse du moteur -ends dpt - -struc entries -filename db 8 dup (0) -filext db 3 dup (0) -fileattr db 0 -filereserved db 0 -filetimecreams db 0 ;(*10 ms) -filetimecrea dw 0 -filedatecrea dw 0 -filedateacc dw 0 -filenotused dw 0 -filetime dw 0 -filedate dw 0 -filegroup dw 0 -filesize dd 0 -ends entries - -;Pour recherches -struct find -files db 13 dup (0) ;le fichier -entryplace dw 0 ;En octet -adressdirectory dw 0 ;En cluster -firstsearch db 1 ;Premiere requete ? -result entries <> -ends find - -struc bootinfo -vendor db 'COS2000A' ;Fabricant + n°série Formatage -sectorsize dw 512 ;octet/secteur -sectorspercluster db 1 ;secteur/cluster -reservedsectors dw 1 ;secteur reserv‚ -fatsperdrive db 2 ;nb de copie de la FAT -directorysize dw 224 ;taille rep racine -sectorsperdrive dw 2880 ;nb secteur du volume si < 32 még -mediadescriptor db 0F0h ;Descripteur de média -sectorsperfat dw 9 ;secteur/FAT -sectorspertrack dw 18 ;secteur/piste -headsperdrive dw 2 ;nb de tˆteb de lecture/écriture -hiddensectorsh dw 0 ;nombre de secteur cach‚s -hiddensectorsl dw 0 ; -sectorperdisk2 dd 0 ;Nombre secteur du volume si > 32 Mo+20h ; the number of sectors -bootdrive db 0 ;Lecteur de d‚marrage -reservedfornt db 0 ;NA -bootsign db 29h ;boot signature 29h -serialnumber dd 01020304h ;no de serie -drivename db 'COS2000 ' ;nom de volume -typeoffat db 'FAT16 ' ;FAT -ends bootinfo diff --git a/include/graphic.h b/include/graphic.h deleted file mode 100644 index f6d14b2..0000000 --- a/include/graphic.h +++ /dev/null @@ -1,26 +0,0 @@ -struc point -coordx db 0 -coordy db 0 -ends point - -struc vgainf -lines db 0 -columns db 0 -x db 0 -y db 0 -xy dw 0 -colors db 7 -mode db 0FFh -pagesize dw 0 -style db 0 -font db 0 -graphic db 0 -nbpage db 0 -color db 0 -cursor db 0 -segments dw 0 -linesize dw 0 -adress dw 0 -base dw 0 -scrolling db 1 -ends vgainf diff --git a/include/mem.h b/include/mem.h deleted file mode 100644 index 5e9035e..0000000 --- a/include/mem.h +++ /dev/null @@ -1,124 +0,0 @@ -struc regs -seip dd 0 -seax dd 0 -sebx dd 0 -secx dd 0 -sedx dd 0 -sesi dd 0 -sedi dd 0 -sebp dd 0 -sesp dd 0 -scs dw 0 -sds dw 0 -ses dw 0 -sfs dw 0 -sgs dw 0 -sss dw 0 -seflags dd 0 -ends regs - -struc tuple ;vecteur d'interruption -off dw 0 ;adresse -seg dw 0 ;segment -ends tuple - -union vector -data tuple <> -content dd 0 -ends - -struc ints ;bloc interruption -number db 0 ;numero de l'interruption -activated db 0 ;activé ou non -locked db 0 ;verrouillée -launchedlow dd 0 -launchedhigh dd 0 -calledlow dd 0 -calledhigh dd 0 -vector1 vector ? -vector2 vector ? -vector3 vector ? -vector4 vector ? -vector5 vector ? -vector6 vector ? -vector7 vector ? -vector8 vector ? -ends ints - -struc mb ;Bloc de mémoire -check db "NH" ;signature du bloc de mémoire -isnotlast db 0 ;flag indiquant le dernier bloc -isresident db 0 ;flag indiquant que le bloc est resident -reference dw 0 ;pointeur vers le bloc parent -sizes dw 0 ;taille du bloc en paragraphe de 16 octet -names db 24 dup (0) ;nom du bloc -ends mb - -struc exe ;Executable COS -checks db "CE" ;signature de l'exe -major db 1 ;N° version -checksum dd 0 ;Checksum de l'exe -compressed db 0 ;a 1 si compressé par RLE -exports dw 0 ;importation de fonctions -imports dw 0 ;exportation de fonctions -sections dw 0 ;sections des blocs mémoire -starting dw 15 -ends exe - -struc descriptor -limit_low dw 0 -base_low dw 0 -base_middle db 0 -dpltype db 0 -limit_high db 0 -base_high db 0 -ends descriptor - - -free equ 0 ;Reference quand libre - - - -macro exporting - label exports -endm - -macro importing - label imports -endm - -macro noimporting - label imports - dd 0 -endm - -macro noexporting - label imports - dd 0 -endm - -macro ende - dd 0 -endm - -macro endi - dd 0 -endm - -macro use lib:req,fonction:req - db "&lib&::&fonction&",0 -label &fonction& dword - dd 0 -endm - -macro declare fonction:req - db "&fonction&",0 - dw offset fonction -endm - -macro heading versmaj:req,versmin:req,start:req -header exe <"CE",offset &versmaj&,offset &versmin&,0,offset exports,offset imports,0,offset &start&> - db "&fonction&",0 - dw offset fonction -endif -endm diff --git a/include/pci.h b/include/pci.h deleted file mode 100644 index 936321d..0000000 --- a/include/pci.h +++ /dev/null @@ -1,34 +0,0 @@ -struc pcidata -vendor dw 0 ;vendor ID (read-only), FFFFh returned if requested device non-existent -device dw 0 ;device ID (read-only) -command dw 0 ;command register -status dw 0 ;status register -revision db 0 ;revision ID -interface db 0 ;programming interface -subclass db 0 ;sub-class -class db 0 ;class code -cache db 0 ;cache line size -timer db 0 ;latency timer -typed db 0 ;header type - ;bits 6-0: header format - ;00h other - ;01h PCI-to-PCI bridge - ;02h PCI-to-CardBus bridge - ;bit 7: multi-function device -result db 0 ;Built-In Self-Test result -ends pcidata - -struc pciinf -version_major db 0 -version_minor db 0 -types db 0 -maxbus db 0 -ends pciinf - -multifunction equ 80h -othercard equ 00h -pci2pcibridge equ 01h -pci2pcicard equ 02h - -config1addr equ 0CF8h -config1data equ 0CFCh diff --git a/include/pol8x16.inc b/include/pol8x16.inc deleted file mode 100644 index bd946e6..0000000 --- a/include/pol8x16.inc +++ /dev/null @@ -1,256 +0,0 @@ - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Eh, 081h, 0A5h, 081h, 081h, 0BDh, 099h, 081h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Eh, 0FFh, 0DBh, 0FFh, 0FFh, 0C3h, 0E7h, 0FFh, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 036h, 07Fh, 07Fh, 07Fh, 07Fh, 03Eh, 01Ch, 008h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 008h, 01Ch, 03Eh, 07Fh, 03Eh, 01Ch, 008h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 03Ch, 0E7h, 0E7h, 0E7h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 0FFh, 0FFh, 07Eh, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 018h, 03Ch, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Ch, 066h, 042h, 042h, 066h, 03Ch, 000h, 000h, 000h, 000h, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0C3h, 099h, 0BDh, 0BDh, 099h, 0C3h, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 000h, 000h, 00Fh, 007h, 00Dh, 019h, 03Ch, 066h, 066h, 066h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 03Ch, 066h, 066h, 066h, 03Ch, 018h, 07Eh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 03Fh, 033h, 03Fh, 030h, 030h, 030h, 070h, 0F0h, 0E0h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 063h, 07Fh, 063h, 063h, 063h, 067h, 0E7h, 0E6h, 0C0h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 0DBh, 03Ch, 0E7h, 03Ch, 0DBh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 040h, 060h, 070h, 07Ch, 07Fh, 07Ch, 070h, 060h, 040h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 001h, 003h, 007h, 01Fh, 07Fh, 01Fh, 007h, 003h, 001h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 033h, 033h, 033h, 033h, 033h, 033h, 000h, 033h, 033h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 0DBh, 0DBh, 0DBh, 07Bh, 01Bh, 01Bh, 01Bh, 01Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 03Eh, 063h, 030h, 01Ch, 036h, 063h, 063h, 036h, 01Ch, 006h, 063h, 03Eh, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07Fh, 07Fh, 07Fh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 07Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 03Ch, 07Eh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 018h, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 00Ch, 006h, 07Fh, 006h, 00Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 018h, 030h, 07Fh, 030h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 060h, 060h, 060h, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 024h, 066h, 0FFh, 066h, 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 008h, 01Ch, 01Ch, 03Eh, 03Eh, 07Fh, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 07Fh, 07Fh, 03Eh, 03Eh, 01Ch, 01Ch, 008h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 024h, 024h, 024h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 042h, 042h, 042h, 0FFh, 042h, 042h, 042h, 0FFh, 042h, 042h, 042h, 000h, 000h, 000h, 000h - DB 000h, 010h, 07Eh, 090h, 090h, 090h, 07Ch, 012h, 012h, 012h, 0FCh, 010h, 000h, 000h, 000h, 000h - DB 000h, 000h, 061h, 091h, 092h, 064h, 008h, 010h, 026h, 049h, 089h, 086h, 000h, 000h, 000h, 000h - DB 000h, 070h, 088h, 088h, 088h, 050h, 060h, 091h, 08Ah, 084h, 04Ah, 031h, 000h, 000h, 000h, 000h - DB 000h, 018h, 018h, 010h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 006h, 018h, 020h, 040h, 040h, 040h, 040h, 040h, 020h, 018h, 006h, 000h, 000h, 000h, 000h - DB 000h, 060h, 018h, 004h, 002h, 002h, 002h, 002h, 002h, 004h, 018h, 060h, 000h, 000h, 000h, 000h - DB 000h, 000h, 010h, 092h, 054h, 038h, 0FEh, 038h, 054h, 092h, 010h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 010h, 010h, 010h, 0FEh, 010h, 010h, 010h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 018h, 018h, 010h, 020h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h - DB 000h, 000h, 001h, 001h, 002h, 004h, 008h, 010h, 020h, 040h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 083h, 085h, 089h, 091h, 0A1h, 0C1h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 010h, 030h, 050h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 07Ch, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 001h, 002h, 03Ch, 040h, 080h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 001h, 002h, 03Ch, 002h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 002h, 006h, 00Ah, 012h, 022h, 042h, 082h, 0FFh, 002h, 002h, 002h, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 080h, 080h, 080h, 0FCh, 002h, 001h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 080h, 0BCh, 0C2h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 081h, 001h, 002h, 004h, 008h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 042h, 03Ch, 042h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 043h, 03Dh, 001h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 018h, 018h, 010h, 020h, 000h, 000h - DB 000h, 002h, 004h, 008h, 010h, 020h, 040h, 020h, 010h, 008h, 004h, 002h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 0FEh, 000h, 000h, 000h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 040h, 020h, 010h, 008h, 004h, 002h, 004h, 008h, 010h, 020h, 040h, 000h, 000h, 000h, 000h - DB 000h, 038h, 044h, 082h, 082h, 004h, 008h, 010h, 010h, 000h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 099h, 0A5h, 0A5h, 0A5h, 09Eh, 080h, 041h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 018h, 024h, 042h, 081h, 081h, 0FFh, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 042h, 041h, 041h, 042h, 07Ch, 042h, 041h, 041h, 042h, 0FCh, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 080h, 080h, 080h, 080h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 042h, 041h, 041h, 041h, 041h, 041h, 041h, 041h, 042h, 0FCh, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 080h, 080h, 080h, 080h, 0FCh, 080h, 080h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 080h, 080h, 080h, 080h, 0FCh, 080h, 080h, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 080h, 09Fh, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 0FFh, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 038h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 038h, 000h, 000h, 000h, 000h - DB 000h, 007h, 002h, 002h, 002h, 002h, 002h, 002h, 082h, 082h, 044h, 038h, 000h, 000h, 000h, 000h - DB 000h, 081h, 082h, 084h, 088h, 090h, 0E0h, 090h, 088h, 084h, 082h, 081h, 000h, 000h, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 081h, 0C3h, 0A5h, 099h, 099h, 081h, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 081h, 0C1h, 0A1h, 091h, 089h, 085h, 083h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 082h, 081h, 081h, 082h, 0FCh, 080h, 080h, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 081h, 081h, 081h, 081h, 089h, 085h, 042h, 03Dh, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 082h, 081h, 081h, 082h, 0FCh, 090h, 088h, 084h, 082h, 081h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 042h, 081h, 080h, 040h, 03Ch, 002h, 001h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 0FEh, 092h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 042h, 042h, 024h, 024h, 018h, 018h, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 081h, 081h, 081h, 099h, 099h, 0A5h, 0A5h, 042h, 000h, 000h, 000h, 000h - DB 000h, 081h, 081h, 081h, 042h, 024h, 018h, 024h, 042h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 082h, 082h, 082h, 082h, 044h, 028h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 0FFh, 001h, 001h, 002h, 004h, 018h, 020h, 040h, 080h, 080h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 07Eh, 040h, 040h, 040h, 040h, 040h, 040h, 040h, 040h, 040h, 07Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 080h, 080h, 040h, 020h, 010h, 008h, 004h, 002h, 001h, 001h, 000h, 000h, 000h, 000h - DB 000h, 07Eh, 002h, 002h, 002h, 002h, 002h, 002h, 002h, 002h, 002h, 07Eh, 000h, 000h, 000h, 000h - DB 000h, 018h, 024h, 042h, 081h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 000h, 000h - DB 000h, 008h, 004h, 002h, 001h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 07Ch, 002h, 002h, 07Eh, 082h, 082h, 07Dh, 000h, 000h, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 0BCh, 0C2h, 081h, 081h, 081h, 0C2h, 0BCh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Ch, 042h, 080h, 080h, 080h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 001h, 001h, 001h, 001h, 03Dh, 043h, 081h, 081h, 081h, 043h, 03Dh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Ch, 042h, 081h, 0FFh, 080h, 040h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 00Eh, 011h, 010h, 010h, 0FEh, 010h, 010h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Dh, 043h, 081h, 081h, 043h, 03Dh, 001h, 002h, 07Ch, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 0BCh, 0C2h, 081h, 081h, 081h, 081h, 081h, 000h, 000h, 000h, 000h - DB 000h, 000h, 008h, 008h, 000h, 038h, 008h, 008h, 008h, 008h, 008h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 002h, 002h, 000h, 006h, 002h, 002h, 002h, 002h, 002h, 082h, 044h, 038h, 000h, 000h - DB 000h, 080h, 080h, 080h, 080h, 082h, 084h, 088h, 090h, 0A8h, 0C4h, 082h, 000h, 000h, 000h, 000h - DB 038h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 008h, 03Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0ECh, 092h, 092h, 092h, 092h, 092h, 092h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0B8h, 0C4h, 082h, 082h, 082h, 082h, 082h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Ch, 042h, 081h, 081h, 081h, 042h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0BCh, 0C2h, 081h, 081h, 081h, 0C2h, 0BCh, 080h, 080h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Dh, 043h, 081h, 081h, 081h, 043h, 03Dh, 001h, 001h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0BEh, 0C1h, 080h, 080h, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 07Eh, 081h, 080h, 07Eh, 001h, 081h, 07Eh, 000h, 000h, 000h, 000h - DB 010h, 010h, 010h, 010h, 010h, 0FEh, 010h, 010h, 010h, 010h, 011h, 00Eh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 081h, 081h, 081h, 081h, 043h, 03Dh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 081h, 081h, 081h, 042h, 024h, 018h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 082h, 082h, 092h, 092h, 092h, 0AAh, 044h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 042h, 024h, 018h, 024h, 042h, 081h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 081h, 081h, 081h, 081h, 043h, 03Dh, 001h, 002h, 07Ch, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 002h, 004h, 018h, 020h, 040h, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 004h, 008h, 010h, 010h, 010h, 020h, 010h, 010h, 010h, 008h, 004h, 000h, 000h, 000h, 000h - DB 000h, 010h, 010h, 010h, 010h, 000h, 000h, 010h, 010h, 010h, 010h, 000h, 000h, 000h, 000h, 000h - DB 000h, 040h, 020h, 010h, 010h, 010h, 008h, 010h, 010h, 010h, 020h, 040h, 000h, 000h, 000h, 000h - DB 000h, 000h, 070h, 099h, 00Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 008h, 01Ch, 036h, 063h, 063h, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Eh, 033h, 061h, 060h, 060h, 061h, 033h, 01Eh, 006h, 003h, 03Eh, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 006h, 00Ch, 018h, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 008h, 01Ch, 036h, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 01Ch, 036h, 01Ch, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Ch, 066h, 060h, 066h, 03Ch, 00Ch, 006h, 03Ch, 000h, 000h, 000h, 000h - DB 000h, 008h, 01Ch, 036h, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 03Eh, 063h, 07Fh, 060h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 066h, 066h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 018h, 03Ch, 066h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 060h, 030h, 018h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 063h, 063h, 008h, 01Ch, 036h, 063h, 063h, 07Fh, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 01Ch, 036h, 01Ch, 000h, 01Ch, 036h, 063h, 063h, 07Fh, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 00Ch, 018h, 030h, 000h, 07Fh, 033h, 030h, 03Eh, 030h, 033h, 07Fh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 06Eh, 03Bh, 01Bh, 07Eh, 0D8h, 0DCh, 077h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Fh, 036h, 066h, 066h, 07Fh, 066h, 066h, 066h, 067h, 000h, 000h, 000h, 000h, 000h - DB 000h, 008h, 01Ch, 036h, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 063h, 063h, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 018h, 03Ch, 066h, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 030h, 018h, 00Ch, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 063h, 063h, 000h, 063h, 063h, 063h, 063h, 03Fh, 003h, 006h, 03Ch, 000h, 000h, 000h - DB 000h, 063h, 063h, 01Ch, 036h, 063h, 063h, 063h, 063h, 036h, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 063h, 063h, 000h, 063h, 063h, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 018h, 018h, 07Eh, 0C3h, 0C0h, 0C0h, 0C3h, 07Eh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 01Ch, 036h, 032h, 030h, 078h, 030h, 030h, 030h, 073h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 0C3h, 066h, 03Ch, 018h, 0FFh, 018h, 0FFh, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 0FCh, 066h, 066h, 07Ch, 062h, 066h, 06Fh, 066h, 066h, 0F3h, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Eh, 01Bh, 018h, 018h, 018h, 07Eh, 018h, 018h, 018h, 018h, 0D8h, 070h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 03Ch, 006h, 03Eh, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 038h, 018h, 018h, 018h, 018h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 03Eh, 063h, 063h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Ch, 018h, 030h, 000h, 066h, 066h, 066h, 066h, 066h, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 03Bh, 06Eh, 000h, 06Eh, 033h, 033h, 033h, 033h, 033h, 000h, 000h, 000h, 000h, 000h - DB 03Bh, 06Eh, 000h, 063h, 073h, 07Bh, 07Fh, 06Fh, 067h, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 000h, 03Ch, 06Ch, 06Ch, 03Eh, 000h, 07Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 038h, 06Ch, 06Ch, 038h, 000h, 07Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 000h, 018h, 018h, 030h, 063h, 063h, 03Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 07Fh, 060h, 060h, 060h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 07Fh, 003h, 003h, 003h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 060h, 0E0h, 063h, 066h, 06Ch, 018h, 030h, 06Eh, 0C3h, 006h, 00Ch, 01Fh, 000h, 000h, 000h - DB 000h, 060h, 0E0h, 063h, 066h, 06Ch, 018h, 033h, 067h, 0CFh, 01Fh, 003h, 003h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 000h, 018h, 018h, 03Ch, 03Ch, 03Ch, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 01Bh, 036h, 06Ch, 036h, 01Bh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 06Ch, 036h, 01Bh, 036h, 06Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 011h, 044h, 000h, 000h - DB 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 000h, 000h - DB 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 0DDh, 077h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0F8h, 018h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0F6h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FEh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0F8h, 018h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F6h, 006h, 0F6h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FEh, 006h, 0F6h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F6h, 006h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0FEh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0F8h, 018h, 0F8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0F8h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 01Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 01Fh, 018h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 037h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 037h, 030h, 03Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Fh, 030h, 037h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F7h, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0F7h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 037h, 030h, 037h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 0F7h, 000h, 0F7h, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0FFh, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 03Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 01Fh, 018h, 01Fh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 01Fh, 018h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 03Fh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 036h, 036h, 036h, 036h, 036h, 036h, 036h, 0FFh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 0FFh, 018h, 0FFh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0F8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 01Fh, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h - DB 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 0F0h, 000h, 000h - DB 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 00Fh, 000h, 000h - DB 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Bh, 06Eh, 06Ch, 06Ch, 06Eh, 03Bh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Eh, 063h, 07Eh, 063h, 063h, 07Eh, 060h, 060h, 020h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 063h, 063h, 060h, 060h, 060h, 060h, 060h, 060h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 07Fh, 036h, 036h, 036h, 036h, 036h, 036h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Fh, 063h, 030h, 018h, 00Ch, 018h, 030h, 063h, 07Fh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 03Fh, 06Ch, 06Ch, 06Ch, 06Ch, 038h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 033h, 033h, 033h, 033h, 03Eh, 030h, 030h, 060h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Bh, 06Eh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 07Eh, 018h, 03Ch, 066h, 066h, 066h, 03Ch, 018h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Ch, 036h, 063h, 063h, 07Fh, 063h, 063h, 036h, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Ch, 036h, 063h, 063h, 063h, 036h, 036h, 036h, 077h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Eh, 030h, 018h, 00Ch, 03Eh, 066h, 066h, 066h, 03Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 07Eh, 0DBh, 0DBh, 07Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 003h, 006h, 07Eh, 0DBh, 0DBh, 0F3h, 07Eh, 060h, 0C0h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 01Ch, 030h, 060h, 060h, 07Ch, 060h, 060h, 030h, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 03Eh, 063h, 063h, 063h, 063h, 063h, 063h, 063h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 07Fh, 000h, 000h, 07Fh, 000h, 000h, 07Fh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 018h, 0FFh, 018h, 018h, 018h, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 030h, 018h, 00Ch, 006h, 00Ch, 018h, 030h, 000h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 00Ch, 018h, 030h, 060h, 030h, 018h, 00Ch, 000h, 07Eh, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 00Eh, 01Bh, 01Bh, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 000h, 000h - DB 018h, 018h, 018h, 018h, 018h, 018h, 018h, 018h, 0D8h, 0D8h, 070h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 018h, 018h, 000h, 000h, 0FFh, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Bh, 06Eh, 000h, 03Bh, 06Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 038h, 06Ch, 06Ch, 038h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 018h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 018h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 00Fh, 00Ch, 00Ch, 00Ch, 00Ch, 00Ch, 0ECh, 06Ch, 03Ch, 01Ch, 000h, 000h, 000h, 000h, 000h - DB 000h, 0D8h, 06Ch, 06Ch, 06Ch, 06Ch, 06Ch, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 070h, 0D8h, 030h, 060h, 0C8h, 0F8h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 03Eh, 03Eh, 03Eh, 03Eh, 03Eh, 03Eh, 000h, 000h, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h diff --git a/include/pol8x8.inc b/include/pol8x8.inc deleted file mode 100644 index 7d5f4c0..0000000 --- a/include/pol8x8.inc +++ /dev/null @@ -1,128 +0,0 @@ - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 07Eh, 081h, 0A5h, 081h, 0BDh, 099h, 081h, 07Eh - DB 07Eh, 0FFh, 0DBh, 0FFh, 0C3h, 0E7h, 0FFh, 07Eh, 06Ch, 0FEh, 0FEh, 0FEh, 07Ch, 038h, 010h, 000h - DB 010h, 038h, 07Ch, 0FEh, 07Ch, 038h, 010h, 000h, 038h, 07Ch, 038h, 0FEh, 0FEh, 07Ch, 038h, 07Ch - DB 010h, 010h, 038h, 07Ch, 0FEh, 07Ch, 038h, 07Ch, 000h, 000h, 018h, 03Ch, 03Ch, 018h, 000h, 000h - DB 0FFh, 0FFh, 0E7h, 0C3h, 0C3h, 0E7h, 0FFh, 0FFh, 000h, 03Ch, 066h, 042h, 042h, 066h, 03Ch, 000h - DB 0FFh, 0C3h, 099h, 0BDh, 0BDh, 099h, 0C3h, 0FFh, 00Fh, 007h, 00Fh, 07Dh, 0CCh, 0CCh, 0CCh, 078h - DB 03Ch, 066h, 066h, 066h, 03Ch, 018h, 07Eh, 018h, 03Fh, 033h, 03Fh, 030h, 030h, 070h, 0F0h, 0E0h - DB 07Fh, 063h, 07Fh, 063h, 063h, 067h, 0E6h, 0C0h, 099h, 05Ah, 03Ch, 0E7h, 0E7h, 03Ch, 05Ah, 099h - DB 080h, 0E0h, 0F8h, 0FEh, 0F8h, 0E0h, 080h, 000h, 002h, 00Eh, 03Eh, 0FEh, 03Eh, 00Eh, 002h, 000h - DB 018h, 03Ch, 07Eh, 018h, 018h, 07Eh, 03Ch, 018h, 066h, 066h, 066h, 066h, 066h, 000h, 066h, 000h - DB 07Fh, 0DBh, 0DBh, 07Bh, 01Bh, 01Bh, 01Bh, 000h, 03Eh, 063h, 038h, 06Ch, 06Ch, 038h, 0CCh, 078h - DB 000h, 000h, 000h, 000h, 07Eh, 07Eh, 07Eh, 000h, 018h, 03Ch, 07Eh, 018h, 07Eh, 03Ch, 018h, 0FFh - DB 018h, 03Ch, 07Eh, 018h, 018h, 018h, 018h, 000h, 018h, 018h, 018h, 018h, 07Eh, 03Ch, 018h, 000h - DB 000h, 018h, 00Ch, 0FEh, 00Ch, 018h, 000h, 000h, 000h, 030h, 060h, 0FEh, 060h, 030h, 000h, 000h - DB 000h, 000h, 0C0h, 0C0h, 0C0h, 0FEh, 000h, 000h, 000h, 024h, 066h, 0FFh, 066h, 024h, 000h, 000h - DB 000h, 018h, 03Ch, 07Eh, 0FFh, 0FFh, 000h, 000h, 000h, 0FFh, 0FFh, 07Eh, 03Ch, 018h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 040h, 040h, 040h, 040h, 040h, 000h, 040h, 000h - DB 090h, 090h, 000h, 000h, 000h, 000h, 000h, 000h, 050h, 050h, 0F8h, 050h, 0F8h, 050h, 050h, 000h - DB 020h, 078h, 0A0h, 070h, 028h, 0F0h, 020h, 000h, 0C8h, 0C8h, 010h, 020h, 040h, 098h, 098h, 000h - DB 070h, 088h, 050h, 020h, 054h, 088h, 074h, 000h, 060h, 020h, 040h, 000h, 000h, 000h, 000h, 000h - DB 020h, 040h, 080h, 080h, 080h, 040h, 020h, 000h, 020h, 010h, 008h, 008h, 008h, 010h, 020h, 000h - DB 000h, 020h, 0A8h, 070h, 070h, 0A8h, 020h, 000h, 000h, 000h, 020h, 020h, 0F8h, 020h, 020h, 000h - DB 000h, 000h, 000h, 000h, 000h, 060h, 020h, 040h, 000h, 000h, 000h, 000h, 0F8h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 000h, 060h, 060h, 000h, 002h, 004h, 008h, 010h, 020h, 040h, 080h, 000h - DB 070h, 088h, 098h, 0A8h, 0C8h, 088h, 070h, 000h, 040h, 0C0h, 040h, 040h, 040h, 040h, 0E0h, 000h - DB 070h, 088h, 008h, 010h, 020h, 040h, 0F8h, 000h, 070h, 088h, 008h, 010h, 008h, 088h, 070h, 000h - DB 008h, 018h, 028h, 048h, 0FCh, 008h, 008h, 000h, 0F8h, 080h, 080h, 0F0h, 008h, 088h, 070h, 000h - DB 020h, 040h, 080h, 0F0h, 088h, 088h, 070h, 000h, 0F8h, 008h, 010h, 020h, 040h, 040h, 040h, 000h - DB 070h, 088h, 088h, 070h, 088h, 088h, 070h, 000h, 070h, 088h, 088h, 078h, 008h, 008h, 070h, 000h - DB 000h, 000h, 060h, 060h, 000h, 060h, 060h, 000h, 000h, 000h, 060h, 060h, 000h, 060h, 060h, 020h - DB 010h, 020h, 040h, 080h, 040h, 020h, 010h, 000h, 000h, 000h, 0F8h, 000h, 0F8h, 000h, 000h, 000h - DB 080h, 040h, 020h, 010h, 020h, 040h, 080h, 000h, 078h, 084h, 004h, 008h, 010h, 000h, 010h, 000h - DB 070h, 088h, 088h, 0A8h, 0B8h, 080h, 078h, 000h, 020h, 050h, 088h, 088h, 0F8h, 088h, 088h, 000h - DB 0F0h, 088h, 088h, 0F0h, 088h, 088h, 0F0h, 000h, 070h, 088h, 080h, 080h, 080h, 088h, 070h, 000h - DB 0F0h, 088h, 088h, 088h, 088h, 088h, 0F0h, 000h, 0F8h, 080h, 080h, 0E0h, 080h, 080h, 0F8h, 000h - DB 0F8h, 080h, 080h, 0E0h, 080h, 080h, 080h, 000h, 070h, 088h, 080h, 080h, 098h, 088h, 078h, 000h - DB 088h, 088h, 088h, 0F8h, 088h, 088h, 088h, 000h, 0E0h, 040h, 040h, 040h, 040h, 040h, 0E0h, 000h - DB 038h, 010h, 010h, 010h, 010h, 090h, 060h, 000h, 088h, 090h, 0A0h, 0C0h, 0A0h, 090h, 088h, 000h - DB 080h, 080h, 080h, 080h, 080h, 080h, 0F8h, 000h, 082h, 0C6h, 0AAh, 092h, 082h, 082h, 082h, 000h - DB 084h, 0C4h, 0A4h, 094h, 08Ch, 084h, 084h, 000h, 070h, 088h, 088h, 088h, 088h, 088h, 070h, 000h - DB 0F0h, 088h, 088h, 0F0h, 080h, 080h, 080h, 000h, 070h, 088h, 088h, 088h, 0A8h, 090h, 068h, 000h - DB 0F0h, 088h, 088h, 0F0h, 0A0h, 090h, 088h, 000h, 070h, 088h, 080h, 070h, 008h, 088h, 070h, 000h - DB 0F8h, 020h, 020h, 020h, 020h, 020h, 020h, 000h, 088h, 088h, 088h, 088h, 088h, 088h, 070h, 000h - DB 088h, 088h, 088h, 050h, 050h, 020h, 020h, 000h, 082h, 082h, 082h, 082h, 092h, 092h, 06Ch, 000h - DB 088h, 088h, 050h, 020h, 050h, 088h, 088h, 000h, 088h, 088h, 088h, 050h, 020h, 020h, 020h, 000h - DB 0F8h, 008h, 010h, 020h, 040h, 080h, 0F8h, 000h, 0E0h, 080h, 080h, 080h, 080h, 080h, 0E0h, 000h - DB 080h, 040h, 020h, 010h, 008h, 004h, 002h, 000h, 0E0h, 020h, 020h, 020h, 020h, 020h, 0E0h, 000h - DB 020h, 050h, 088h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 0F8h, 000h - DB 040h, 020h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 070h, 008h, 078h, 088h, 074h, 000h - DB 080h, 080h, 0B0h, 0C8h, 088h, 0C8h, 0B0h, 000h, 000h, 000h, 070h, 088h, 080h, 088h, 070h, 000h - DB 008h, 008h, 068h, 098h, 088h, 098h, 068h, 000h, 000h, 000h, 070h, 088h, 0F8h, 080h, 070h, 000h - DB 030h, 048h, 040h, 0E0h, 040h, 040h, 040h, 000h, 000h, 000h, 034h, 048h, 048h, 038h, 008h, 030h - DB 080h, 080h, 0B0h, 0C8h, 088h, 088h, 088h, 000h, 020h, 000h, 060h, 020h, 020h, 020h, 070h, 000h - DB 010h, 000h, 030h, 010h, 010h, 010h, 090h, 060h, 080h, 080h, 088h, 090h, 0A0h, 0D0h, 088h, 000h - DB 0C0h, 040h, 040h, 040h, 040h, 040h, 0E0h, 000h, 000h, 000h, 0ECh, 092h, 092h, 092h, 092h, 000h - DB 000h, 000h, 0B0h, 0C8h, 088h, 088h, 088h, 000h, 000h, 000h, 070h, 088h, 088h, 088h, 070h, 000h - DB 000h, 000h, 0B0h, 0C8h, 0C8h, 0B0h, 080h, 080h, 000h, 000h, 068h, 098h, 098h, 068h, 008h, 008h - DB 000h, 000h, 0B0h, 0C8h, 080h, 080h, 080h, 000h, 000h, 000h, 078h, 080h, 070h, 008h, 0F0h, 000h - DB 040h, 040h, 0E0h, 040h, 040h, 050h, 020h, 000h, 000h, 000h, 088h, 088h, 088h, 098h, 068h, 000h - DB 000h, 000h, 088h, 088h, 088h, 050h, 020h, 000h, 000h, 000h, 082h, 082h, 092h, 092h, 06Ch, 000h - DB 000h, 000h, 088h, 050h, 020h, 050h, 088h, 000h, 000h, 000h, 088h, 088h, 098h, 068h, 008h, 070h - DB 000h, 000h, 0F8h, 010h, 020h, 040h, 0F8h, 000h, 010h, 020h, 020h, 040h, 020h, 020h, 010h, 000h - DB 040h, 040h, 040h, 000h, 040h, 040h, 040h, 000h, 040h, 020h, 020h, 010h, 020h, 020h, 040h, 000h - DB 076h, 0DCh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 010h, 038h, 06Ch, 0C6h, 0C6h, 0FEh, 000h - DB 03Eh, 060h, 0C0h, 060h, 03Eh, 008h, 004h, 018h, 000h, 048h, 000h, 0CCh, 0CCh, 0CCh, 0CCh, 076h - DB 018h, 020h, 000h, 078h, 0CCh, 0FCh, 0C0h, 078h, 010h, 028h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h - DB 000h, 048h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 030h, 008h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h - DB 048h, 030h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 078h, 0CCh, 0C0h, 0CCh, 078h, 010h, 008h, 030h - DB 030h, 048h, 084h, 078h, 0CCh, 0FCh, 0C0h, 078h, 000h, 048h, 000h, 078h, 0CCh, 0FCh, 0C0h, 078h - DB 030h, 008h, 000h, 078h, 0CCh, 0FCh, 0C0h, 078h, 000h, 048h, 000h, 030h, 030h, 030h, 030h, 030h - DB 030h, 048h, 000h, 030h, 030h, 030h, 030h, 030h, 060h, 010h, 000h, 030h, 030h, 030h, 030h, 030h - DB 048h, 000h, 030h, 078h, 0CCh, 0CCh, 0FCh, 0CCh, 030h, 048h, 030h, 048h, 084h, 0FCh, 084h, 084h - DB 018h, 020h, 000h, 0F8h, 080h, 0F0h, 080h, 0F8h, 000h, 000h, 000h, 066h, 019h, 077h, 088h, 077h - DB 000h, 000h, 000h, 00Fh, 014h, 03Eh, 044h, 087h, 030h, 048h, 084h, 078h, 0CCh, 0CCh, 0CCh, 078h - DB 000h, 048h, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h, 060h, 010h, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h - DB 030h, 048h, 084h, 000h, 0CCh, 0CCh, 0CCh, 076h, 060h, 010h, 000h, 0CCh, 0CCh, 0CCh, 0CCh, 076h - DB 048h, 000h, 0CCh, 0CCh, 0CCh, 07Ch, 00Ch, 0F8h, 044h, 000h, 038h, 06Ch, 0C6h, 0C6h, 06Ch, 038h - DB 024h, 000h, 066h, 066h, 066h, 066h, 066h, 03Ch, 000h, 008h, 01Ch, 028h, 028h, 01Ch, 008h, 000h - DB 01Ch, 022h, 020h, 070h, 020h, 022h, 05Ch, 000h, 044h, 028h, 010h, 010h, 038h, 010h, 038h, 010h - DB 0F0h, 088h, 08Ah, 0F7h, 082h, 082h, 083h, 000h, 006h, 008h, 008h, 03Ch, 010h, 010h, 060h, 000h - DB 018h, 020h, 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 018h, 020h, 000h, 030h, 030h, 030h, 030h, 030h - DB 018h, 020h, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h, 018h, 020h, 000h, 0CCh, 0CCh, 0CCh, 0CCh, 076h - DB 080h, 078h, 004h, 0F8h, 0CCh, 0CCh, 0CCh, 0CCh, 080h, 07Eh, 001h, 0C6h, 0E6h, 0D6h, 0CEh, 0C6h - DB 000h, 078h, 00Ch, 07Ch, 0CCh, 076h, 000h, 0FEh, 000h, 078h, 0CCh, 0CCh, 0CCh, 078h, 000h, 0FCh - DB 000h, 000h, 018h, 018h, 030h, 060h, 066h, 03Ch, 0FFh, 080h, 080h, 080h, 000h, 000h, 000h, 000h - DB 0FFh, 001h, 001h, 001h, 000h, 000h, 000h, 000h, 040h, 0C4h, 048h, 050h, 026h, 049h, 082h, 007h - DB 040h, 0C4h, 048h, 050h, 026h, 04Ah, 09Fh, 002h, 000h, 030h, 000h, 030h, 030h, 030h, 030h, 030h - DB 000h, 012h, 024h, 048h, 090h, 048h, 024h, 012h, 000h, 048h, 024h, 012h, 009h, 012h, 024h, 048h - DB 049h, 000h, 092h, 000h, 049h, 000h, 092h, 000h, 06Dh, 000h, 0B6h, 000h, 06Dh, 000h, 0B6h, 000h - DB 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 0AAh, 055h, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 010h - DB 010h, 010h, 010h, 010h, 0F0h, 010h, 010h, 010h, 010h, 010h, 010h, 0F0h, 010h, 0F0h, 010h, 010h - DB 028h, 028h, 028h, 028h, 0E8h, 028h, 028h, 028h, 000h, 000h, 000h, 000h, 0F8h, 028h, 028h, 028h - DB 000h, 000h, 000h, 0F0h, 010h, 0F0h, 010h, 010h, 028h, 028h, 028h, 0E8h, 008h, 0E8h, 028h, 028h - DB 028h, 028h, 028h, 028h, 028h, 028h, 028h, 028h, 000h, 000h, 000h, 0F8h, 008h, 0E8h, 028h, 028h - DB 028h, 028h, 028h, 0E8h, 008h, 0F8h, 000h, 000h, 028h, 028h, 028h, 028h, 0F8h, 000h, 000h, 000h - DB 010h, 010h, 010h, 0F0h, 010h, 0F0h, 000h, 000h, 000h, 000h, 000h, 000h, 0F0h, 010h, 010h, 010h - DB 010h, 010h, 010h, 010h, 01Fh, 000h, 000h, 000h, 010h, 010h, 010h, 010h, 0FFh, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 0FFh, 010h, 010h, 010h, 010h, 010h, 010h, 010h, 01Fh, 010h, 010h, 010h - DB 000h, 000h, 000h, 000h, 0FFh, 000h, 000h, 000h, 010h, 010h, 010h, 010h, 0FFh, 010h, 010h, 010h - DB 010h, 010h, 010h, 01Fh, 010h, 01Fh, 010h, 010h, 028h, 028h, 028h, 028h, 03Fh, 028h, 028h, 028h - DB 028h, 028h, 028h, 02Fh, 020h, 03Fh, 000h, 000h, 000h, 000h, 000h, 03Fh, 020h, 02Fh, 028h, 028h - DB 028h, 028h, 028h, 0EFh, 000h, 0FFh, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0EFh, 028h, 028h - DB 028h, 028h, 028h, 02Fh, 020h, 02Fh, 028h, 028h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 000h, 000h - DB 028h, 028h, 028h, 0EFh, 000h, 0EFh, 028h, 028h, 010h, 010h, 010h, 0FFh, 000h, 0FFh, 000h, 000h - DB 028h, 028h, 028h, 028h, 0FFh, 000h, 000h, 000h, 000h, 000h, 000h, 0FFh, 000h, 0FFh, 010h, 010h - DB 000h, 000h, 000h, 000h, 0FFh, 028h, 028h, 028h, 028h, 028h, 028h, 028h, 03Fh, 000h, 000h, 000h - DB 010h, 010h, 010h, 01Fh, 010h, 01Fh, 000h, 000h, 000h, 000h, 000h, 01Fh, 010h, 01Fh, 010h, 010h - DB 000h, 000h, 000h, 000h, 03Fh, 028h, 028h, 028h, 028h, 028h, 028h, 028h, 0FFh, 028h, 028h, 028h - DB 010h, 010h, 010h, 0FFh, 010h, 0FFh, 010h, 010h, 010h, 010h, 010h, 010h, 0F0h, 000h, 000h, 000h - DB 000h, 000h, 000h, 000h, 01Fh, 010h, 010h, 010h, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh - DB 000h, 000h, 000h, 000h, 0FFh, 0FFh, 0FFh, 000h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h, 0E0h - DB 007h, 007h, 007h, 007h, 007h, 007h, 007h, 007h, 0FFh, 0FFh, 0FFh, 0FFh, 000h, 000h, 000h, 000h - DB 000h, 000h, 000h, 002h, 034h, 04Ch, 04Ch, 032h, 000h, 05Ch, 022h, 022h, 03Ch, 044h, 044h, 078h - DB 07Eh, 042h, 042h, 040h, 040h, 040h, 040h, 040h, 000h, 000h, 002h, 07Ch, 0A8h, 028h, 028h, 044h - DB 000h, 07Eh, 061h, 030h, 018h, 008h, 010h, 020h, 000h, 000h, 008h, 07Fh, 088h, 088h, 088h, 070h - DB 000h, 000h, 000h, 022h, 044h, 044h, 07Ah, 080h, 000h, 000h, 000h, 07Ch, 010h, 010h, 010h, 010h - DB 000h, 01Ch, 008h, 03Eh, 041h, 041h, 041h, 03Eh, 000h, 000h, 038h, 044h, 044h, 07Ch, 044h, 044h - DB 03Ch, 066h, 0C3h, 0C3h, 0C3h, 066h, 024h, 066h, 00Ch, 010h, 008h, 01Ch, 022h, 022h, 022h, 01Ch - DB 000h, 000h, 000h, 000h, 06Ch, 092h, 092h, 06Ch, 000h, 001h, 01Ah, 026h, 02Ah, 032h, 02Ch, 040h - DB 000h, 018h, 020h, 020h, 030h, 020h, 020h, 018h, 000h, 03Ch, 042h, 042h, 042h, 042h, 042h, 042h - DB 000h, 000h, 07Eh, 000h, 07Eh, 000h, 07Eh, 000h, 000h, 008h, 008h, 03Eh, 008h, 008h, 000h, 03Eh - DB 000h, 010h, 008h, 004h, 008h, 010h, 000h, 03Eh, 000h, 004h, 008h, 010h, 008h, 004h, 000h, 03Eh - DB 000h, 006h, 009h, 009h, 008h, 008h, 008h, 000h, 000h, 000h, 008h, 008h, 008h, 048h, 048h, 030h - DB 000h, 000h, 008h, 000h, 03Eh, 000h, 008h, 000h, 000h, 060h, 092h, 00Ch, 060h, 092h, 00Ch, 000h - DB 060h, 090h, 060h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 030h, 078h, 030h, 000h, 000h - DB 000h, 000h, 000h, 000h, 020h, 000h, 000h, 000h, 000h, 003h, 004h, 004h, 0C8h, 028h, 010h, 000h - DB 000h, 000h, 000h, 07Ch, 042h, 042h, 042h, 000h, 018h, 024h, 008h, 010h, 03Ch, 000h, 000h, 000h - DB 000h, 000h, 000h, 03Eh, 03Eh, 03Eh, 03Eh, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h, 000h diff --git a/install/MAKEFILE b/install/MAKEFILE deleted file mode 100644 index 3a8ee6a..0000000 --- a/install/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: setup.com - -setup.com: setup.obj - $(lnk) setup.obj setup.com /c - -setup.obj: - $(asm) setup.asm - -clean: - del *.obj - del *.exe - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/install/setup.asm b/install/setup.asm deleted file mode 100644 index 949cb11..0000000 --- a/install/setup.asm +++ /dev/null @@ -1,164 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -org 0100h - -ent equ 32h - -jmp copycos - -message db 0Dh,0Ah,'COS 2000 V1.3.1BetaFr programme d''installation',0Dh,0AH,'Inserez une disquette formatee et appuyez sur entre...',0Dh,0AH,'Attention le contenu de celle ci peut etre altere !!!',0Dh,0AH,'$' -message2 db 0Dh,0AH,'Creation du secteur de demarrage...',0Dh,0Ah,'$' -message3 db 0Dh,0AH,'Copie des fichiers systeme...',0Dh,0Ah,'$' -errormsg db 0Dh,0AH,'Erreur d''installation, contactez moi a COS2000@MULTIMANIA.COM !',0Dh,0AH,'$' -ok db 0Dh,0AH,'COS2000 a ete correctement installe, veuillez redemarrer votre PC',0Dh,0AH,'$' -files db '*.*',0 -boot db 'boot.bin',0 -dat db 'data',0 -retu db 0Dh,0AH,'$' -dta db 43 dup (0) - -copycos: - mov ah,9 - mov dx,offset message - int 21h - xor ax,ax - int 16h - mov ah,4ah - mov bx,1000h - int 21h - jc error - mov ah,48h - mov bx,65536/16 - int 21h - jc error - mov fs,ax - mov ah,3Bh - mov dx,offset dat - int 21h - jc error - mov ah,1Ah - mov dx,offset dta - int 21h - jc error - mov ah,4eh - xor cx,cx - mov dx,offset files - int 21h - jc error - mov ah,09 - mov dx,offset message3 - int 21h -allfile: - mov [byte ptr offset dta+43],'$' - mov ah,9 - mov dx,offset dta+30 - int 21h - push dx - mov ah,09 - mov dx,offset retu - int 21h - pop dx - mov ax,3D00h - int 21h - jc error - mov bx,ax - mov ax,4202h - xor cx,cx - xor dx,dx - int 21h - jc error - cmp dx,0 - jne error - cmp ax,0 - je error - mov bp,ax - mov ax,4200h - xor cx,cx - xor dx,dx - int 21h - jc error - push fs - pop ds - mov ah,3fh - mov cx,0FFFFh - xor dx,dx - int 21h - push cs - pop ds - jc error - mov ah,3eh - int 21h - jc error - mov ah,3ch - push cs - pop es - mov di,offset dta+30-3 - mov [word ptr di],":a" - mov [byte ptr di+2],"\" - xor cx,cx - mov dx,di - int 21h - jc error - mov bx,ax - push fs - pop ds - xor dx,dx - mov ah,40h - mov cx,bp - int 21h - push cs - pop ds - jc error - mov ah,3eh - int 21h - jc error - mov ah,4fh - int 21h - jnc allfile - mov ah,09 - mov dx,offset message2 - int 21h - mov ax,3D00h - mov dx,offset boot - int 21h - jc error - push fs - pop ds - mov ah,3fh - mov cx,0FFFFh - xor dx,dx - int 21h - push cs - pop ds - jc error - mov ah,3eh - int 21h - jc error - push fs - pop es - mov ax,0301h - mov dx,0 - mov cx,0001h - xor bx,bx - int 13h - mov ah,09 - mov dx,offset ok - int 21h - xor ax,ax - int 16h - ret - - -error: - mov ah,09 - mov dx,offset errormsg - int 21h - xor ax,ax - int 16h - ret - diff --git a/install/setup.sh b/install/setup.sh deleted file mode 100755 index 916c579..0000000 Binary files a/install/setup.sh and /dev/null differ diff --git a/install/winNT gui/setup.bpr b/install/winNT gui/setup.bpr deleted file mode 100644 index 035bc7b..0000000 --- a/install/winNT gui/setup.bpr +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1036 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/install/winNT gui/setup.cpp b/install/winNT gui/setup.cpp deleted file mode 100644 index dec5b3e..0000000 --- a/install/winNT gui/setup.cpp +++ /dev/null @@ -1,33 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop -//--------------------------------------------------------------------------- -USEFORM("Unit1.cpp", Form1); -//--------------------------------------------------------------------------- -WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -{ - try - { - Application->Initialize(); - Application->CreateForm(__classid(TForm1), &Form1); - Application->Run(); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - catch (...) - { - try - { - throw Exception(""); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - } - return 0; -} -//--------------------------------------------------------------------------- diff --git a/install/winNT gui/setup.res b/install/winNT gui/setup.res deleted file mode 100644 index 53d1acc..0000000 Binary files a/install/winNT gui/setup.res and /dev/null differ diff --git a/install/winNT gui/setup.tds b/install/winNT gui/setup.tds deleted file mode 100644 index d4db614..0000000 Binary files a/install/winNT gui/setup.tds and /dev/null differ diff --git a/install/winNT gui/unit1.cpp b/install/winNT gui/unit1.cpp deleted file mode 100644 index 2b3fc55..0000000 --- a/install/winNT gui/unit1.cpp +++ /dev/null @@ -1,166 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#include -#include -#include -#include -#pragma hdrstop - -#include "Unit1.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TForm1 *Form1; -HANDLE hDrive; -DISK_GEOMETRY dg_flop_geom; -AnsiString lecteur="b:"; -AnsiString device="\\\\.\\"+lecteur; -//--------------------------------------------------------------------------- -__fastcall TForm1::TForm1(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -char * GetLastErrorString(void) -{ - LPVOID lpMsgBuf; - - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - - return (char *)lpMsgBuf; -} -//--------------------------------------------------------------------------- -ShowMessages(AnsiString msg) -{ - Form1->Memo1->Lines->Add(msg); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FormShow(TObject *Sender) -{ -DWORD dwNotUsed; -DWORD error=0; - - hDrive = CreateFile(device.c_str(), GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); - ShowMessages("Ouverture du peripherique "+lecteur); - if (hDrive == INVALID_HANDLE_VALUE) { - ShowMessages("Erreur : "+AnsiString(GetLastErrorString())); - error=1; - } - if(error!=1&&ShowMessages("Determination de la geometrie ")&&DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL,0, &dg_flop_geom, sizeof(dg_flop_geom),&dwNotUsed, NULL) == FALSE) { - ShowMessages("Erreur : "+AnsiString(GetLastErrorString())); - error=1; - } - if(error!=1&&(dg_flop_geom.MediaType==FixedMedia||dg_flop_geom.MediaType==RemovableMedia||dg_flop_geom.MediaType==Unknown)) - { - ShowMessages("Erreur : Ceci n'est pas une disquette !"); - error=1; - } - if (error!=1&&ShowMessages("Positionnement sur le secteur 0")&&SetFilePointer(hDrive, 0, NULL, FILE_BEGIN) == -1) { - ShowMessages("Erreur : "+AnsiString(GetLastErrorString())); - error=1; - } - if (error!=1) - { - drive->Caption=lecteur.UpperCase(); - track->Caption=IntToStr(dg_flop_geom.Cylinders.LowPart); - sector->Caption=IntToStr(dg_flop_geom.SectorsPerTrack); - size->Caption=IntToStr(dg_flop_geom.BytesPerSector); - head->Caption=IntToStr(dg_flop_geom.TracksPerCylinder); - allsize->Caption=IntToStr(dg_flop_geom.BytesPerSector*dg_flop_geom.Cylinders.LowPart*dg_flop_geom.SectorsPerTrack*dg_flop_geom.TracksPerCylinder); - allsector->Caption=IntToStr(dg_flop_geom.Cylinders.LowPart*dg_flop_geom.SectorsPerTrack*dg_flop_geom.TracksPerCylinder); - } - else - { - CloseHandle(hDrive); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::Button1Click(TObject *Sender) -{ - if (hDrive == NULL||dg_flop_geom.TracksPerCylinder>2||dg_flop_geom.TracksPerCylinder==0) - - { - ShowMessages("Aucun support valide detecté !"); - } - else - { - int fdboot; - DWORD error=0; - DWORD dwBsWritten; - char * buffer; - AnsiString bootfile="data/boot.bin"; - ShowMessages("Allocation de mémoire "); - buffer = (char *)malloc(dg_flop_geom.BytesPerSector); - ShowMessages("Ouverture et installation du fichier de boot "+bootfile); - if ((fdboot = _rtl_open(bootfile.c_str(),O_RDONLY | O_BINARY)) == -1 ) - { - ShowMessages("Erreur : Fichier de boot introuvable"); - error=1; - } - if (error!=1&&_read(fdboot, buffer, dg_flop_geom.BytesPerSector)!= dg_flop_geom.BytesPerSector) - { - ShowMessages("Erreur : Fichier de boot de taille incorrecte !"); - error=1; - } - if (error!=1&&WriteFile(hDrive, buffer, dg_flop_geom.BytesPerSector, &dwBsWritten, NULL) == 0) - { - ShowMessages("Ecriture impossible sur le secteur de boot !"); - error=1; - } - _rtl_close(fdboot); - if (error!=1) - { - struct ffblk files; - int done; - int number=0; - ShowMessages("Détermination des fichiers a copier"); - done = findfirst("data/*.*",&files,0); - while (!done) - { - number++; - done = findnext(&files); - } - install->Max=number; - install->Min=0; - install->Position=0; - ShowMessages("Copie des fichiers de cos2000"); - done = findfirst("data/*.*",&files,0); - while (!done) - { - ShowMessages(AnsiString(files.ff_name).LowerCase()); - if (!CopyFile((AnsiString("data/")+AnsiString(files.ff_name)).c_str(),(lecteur+"\\"+AnsiString(files.ff_name)).c_str(),false)) - { - ShowMessages("Erreur : fichier impossible a copier"+AnsiString(GetLastErrorString())); - error=1; - break; - } - done = findnext(&files); - install->Position++; - } - if (!error) - { - ShowMessages("Installation terminée !"); - Button2->Visible=false; - Button1->Visible=false; - Button3->Visible=true; - } - else - ShowMessages("Installation echoué !"); - } - free(buffer); - } -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) -{ - CloseHandle(hDrive); -} -//--------------------------------------------------------------------------- -void __fastcall TForm1::Button3Click(TObject *Sender) -{ -Close(); -} -//--------------------------------------------------------------------------- diff --git a/install/winNT gui/unit1.ddp b/install/winNT gui/unit1.ddp deleted file mode 100644 index cdc0ee8..0000000 Binary files a/install/winNT gui/unit1.ddp and /dev/null differ diff --git a/install/winNT gui/unit1.dfm b/install/winNT gui/unit1.dfm deleted file mode 100644 index b0445c3..0000000 --- a/install/winNT gui/unit1.dfm +++ /dev/null @@ -1,184 +0,0 @@ -object Form1: TForm1 - Left = 418 - Top = 273 - Width = 599 - Height = 371 - Caption = 'Installation de COS2000' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Button1: TButton - Left = 288 - Top = 304 - Width = 75 - Height = 25 - Caption = 'installer...' - TabOrder = 0 - OnClick = Button1Click - end - object install: TProgressBar - Left = 16 - Top = 264 - Width = 553 - Height = 25 - Min = 0 - Max = 100 - TabOrder = 1 - end - object Button2: TButton - Left = 208 - Top = 304 - Width = 75 - Height = 25 - Caption = 'support' - TabOrder = 2 - OnClick = FormShow - end - object Memo1: TMemo - Left = 192 - Top = 24 - Width = 377 - Height = 225 - ReadOnly = True - TabOrder = 3 - end - object GroupBox1: TGroupBox - Left = 16 - Top = 120 - Width = 161 - Height = 129 - Caption = 'G'#233'om'#233'trie' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - ParentFont = False - TabOrder = 4 - object track: TLabel - Left = 96 - Top = 60 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label4: TLabel - Left = 24 - Top = 60 - Width = 34 - Height = 13 - Caption = 'Pistes :' - end - object Label5: TLabel - Left = 24 - Top = 28 - Width = 48 - Height = 13 - Caption = 'Secteurs :' - end - object sector: TLabel - Left = 96 - Top = 28 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object head: TLabel - Left = 96 - Top = 44 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label6: TLabel - Left = 24 - Top = 44 - Width = 33 - Height = 13 - Caption = 'Tetes :' - end - object Label8: TLabel - Left = 24 - Top = 84 - Width = 69 - Height = 13 - Caption = 'Taille secteur :' - end - object size: TLabel - Left = 96 - Top = 84 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - end - object GroupBox2: TGroupBox - Left = 16 - Top = 16 - Width = 161 - Height = 97 - Caption = 'Support' - TabOrder = 5 - object Label1: TLabel - Left = 24 - Top = 24 - Width = 42 - Height = 13 - Caption = 'Lecteur :' - end - object drive: TLabel - Left = 88 - Top = 24 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label2: TLabel - Left = 24 - Top = 40 - Width = 31 - Height = 13 - Caption = 'Taille :' - end - object allsize: TLabel - Left = 88 - Top = 40 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - object Label3: TLabel - Left = 24 - Top = 56 - Width = 58 - Height = 13 - Caption = 'N'#176'secteurs :' - end - object allsector: TLabel - Left = 88 - Top = 56 - Width = 31 - Height = 13 - Caption = 'Aucun' - end - end - object Button3: TButton - Left = 248 - Top = 304 - Width = 75 - Height = 25 - Caption = 'Quitter' - TabOrder = 6 - Visible = False - OnClick = Button3Click - end -end diff --git a/install/winNT gui/unit1.h b/install/winNT gui/unit1.h deleted file mode 100644 index 6d0d3a7..0000000 --- a/install/winNT gui/unit1.h +++ /dev/null @@ -1,47 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef Unit1H -#define Unit1H -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TForm1 : public TForm -{ -__published: // IDE-managed Components - TButton *Button1; - TProgressBar *install; - TButton *Button2; - TMemo *Memo1; - TGroupBox *GroupBox1; - TLabel *track; - TLabel *Label4; - TLabel *Label5; - TLabel *sector; - TLabel *head; - TLabel *Label6; - TLabel *Label8; - TLabel *size; - TGroupBox *GroupBox2; - TLabel *Label1; - TLabel *drive; - TLabel *Label2; - TLabel *allsize; - TLabel *Label3; - TLabel *allsector; - TButton *Button3; - void __fastcall FormShow(TObject *Sender); - void __fastcall Button1Click(TObject *Sender); - void __fastcall FormClose(TObject *Sender, TCloseAction &Action); - void __fastcall Button3Click(TObject *Sender); -private: // User declarations -public: // User declarations - __fastcall TForm1(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TForm1 *Form1; -//--------------------------------------------------------------------------- -#endif diff --git a/install/winNT/setup.bpf b/install/winNT/setup.bpf deleted file mode 100644 index 6967230..0000000 --- a/install/winNT/setup.bpf +++ /dev/null @@ -1,4 +0,0 @@ -This file is used by the project manager only and should be treated like the project file - - -main \ No newline at end of file diff --git a/install/winNT/setup.bpr b/install/winNT/setup.bpr deleted file mode 100644 index b67fc36..0000000 --- a/install/winNT/setup.bpr +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=0 -AutoIncBuild=0 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1036 -CodePage=1252 - -[Version Info Keys] -CompanyName= -FileDescription= -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName= -ProductVersion=1.0.0.0 -Comments= - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - -[Language] -ActiveLang= -ProjectLang= -RootDir= - - \ No newline at end of file diff --git a/install/winNT/setup.res b/install/winNT/setup.res deleted file mode 100644 index 53d1acc..0000000 Binary files a/install/winNT/setup.res and /dev/null differ diff --git a/install/winNT/setup.tds b/install/winNT/setup.tds deleted file mode 100644 index 5ae5c8e..0000000 Binary files a/install/winNT/setup.tds and /dev/null differ diff --git a/install/winNT/unit1.cpp b/install/winNT/unit1.cpp deleted file mode 100644 index 8448703..0000000 --- a/install/winNT/unit1.cpp +++ /dev/null @@ -1,135 +0,0 @@ -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -#pragma hdrstop - -//--------------------------------------------------------------------------- -char * GetLastErrorString(void) -{ - LPVOID lpMsgBuf; - - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, - NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPTSTR) &lpMsgBuf, 0, NULL); - - return (char *)lpMsgBuf; -} - - -#pragma argsused -int main(int argc, char* argv[]) -{ -DWORD dwNotUsed; -DWORD error=0; -HANDLE hDrive; -DISK_GEOMETRY dg_flop_geom; -char lecteur[4]="a:\0"; -char device[7]="\\\\.\\a:\0"; -int fdboot; -DWORD dwBsWritten; -char * buffer; -char bootfile[14]="data/boot.bin\0"; -struct ffblk files; -int done; -int number=0; -char src[80]; -char dest[80]; - printf("Installation de COS2000\nInserez une disquette et appuyer sur une touche...\n"); - getchar(); - hDrive = CreateFile(device, GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); - printf("Ouverture du peripherique %s\n",lecteur); - if (hDrive == INVALID_HANDLE_VALUE) { - printf("Erreur : %s\n",GetLastErrorString()); - error=1; - } - if(error!=1&&printf("Determination de la geometrie \n")&&DeviceIoControl(hDrive, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL,0, &dg_flop_geom, sizeof(dg_flop_geom),&dwNotUsed, NULL) == FALSE) { - printf("Erreur : %s\n",GetLastErrorString()); - error=1; - } - if(error!=1&&(dg_flop_geom.MediaType==FixedMedia||dg_flop_geom.MediaType==RemovableMedia||dg_flop_geom.MediaType==Unknown)) - { - printf("Erreur : Ceci n'est pas une disquette !\n"); - error=1; - } - if (error!=1&&printf("Positionnement sur le secteur 0\n")&&SetFilePointer(hDrive, 0, NULL, FILE_BEGIN) == -1) { - printf("Erreur : %s\n",GetLastErrorString()); - error=1; - } - if (error!=1) - { - printf("Pistes :%u Secteurs:%u Tetes:%u Taille:%u\n",dg_flop_geom.Cylinders.LowPart,dg_flop_geom.SectorsPerTrack,dg_flop_geom.TracksPerCylinder,dg_flop_geom.BytesPerSector); - } - else - { - CloseHandle(hDrive); - } - if (hDrive == NULL||dg_flop_geom.TracksPerCylinder>2||dg_flop_geom.TracksPerCylinder==0) - { - printf("Aucun support valide detecte !"); - error=1; - } - if (error!=1) - { - printf("Allocation de memoire\n"); - buffer = (char *)malloc(dg_flop_geom.BytesPerSector); - printf("Ouverture et installation du fichier de boot %s\n",bootfile); - } - if (error!=1&&(fdboot = _rtl_open(bootfile,O_RDONLY | O_BINARY)) == -1 ) - { - printf("Erreur : Fichier de boot introuvable\n"); - error=1; - } - if (error!=1&&_read(fdboot, buffer, dg_flop_geom.BytesPerSector)!= dg_flop_geom.BytesPerSector) - { - printf("Erreur : Fichier de boot de taille incorrecte !\n"); - error=1; - } - if (error!=1&&WriteFile(hDrive, buffer, dg_flop_geom.BytesPerSector, &dwBsWritten, NULL) == 0) - { - printf("Ecriture impossible sur le secteur de boot !\n"); - error=1; - } - if (error!=1) - { - _rtl_close(fdboot); - printf("Determination des fichiers a copier\n\n"); - done = findfirst("data\\*.*",&files,0); - while (!done) - { - number++; - done = findnext(&files); - } - printf("Copie des fichiers de cos2000\n"); - done = findfirst("data\\*.*",&files,0); - while (!done) - { - printf("%s\n",files.ff_name); - sprintf(src, "data\\%s",files.ff_name); - sprintf(dest, "%s\\%s",lecteur,files.ff_name); - if (!CopyFile(src,dest,false)) - { - printf("Erreur : fichier impossible a copier %s\n",GetLastErrorString()); - error=1; - break; - } - done = findnext(&files); - } - if (!error) - { - printf("Installation terminee !\nVeuillez redemarrer votre PC afin de charger le systeme"); - } - else - { - printf("Installation echoué !"); - } - free(buffer); - } - getchar(); - return 0; -} -//--------------------------------------------------------------------------- diff --git a/lib/MAKEFILE b/lib/MAKEFILE deleted file mode 100644 index f061400..0000000 --- a/lib/MAKEFILE +++ /dev/null @@ -1,20 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: detect.lib video.lib str0.lib bmp.lib - -.asm.obj: - $(asm) $< - -.obj.lib: - $(lnk) $< $*.lib - -clean: - del *.obj - del *.ce - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/lib/bmp.asm b/lib/bmp.asm deleted file mode 100644 index 893346a..0000000 --- a/lib/bmp.asm +++ /dev/null @@ -1,105 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\bmp.h" - -org 0h - -start: -header exe <"CE",1,0,0,offset exports,offset imports,,> - -exporting -declare showbmp -declare loadbmppalet -ende - -importing -use VIDEO,showpixel -endi - -;==========SHOWBMP========= -;Affiche le BMP pointée par DS:%0 en %1, %2 -;<- DS:%0 BMP, %1 coordonnées X, %2 coordonnées Y -;-> -;========================== -PROC showbmp FAR - ARG @pointer:word, @x:word, @y:word - USES ax,bx,cx,dx,si,di - mov si,[@pointer] - cmp [word ptr (bmp_file si).bmp_filetype],"MB" - jne @@errorshowing - mov edi,[(bmp_file si).bmp_bitmapoffset] - add di,400h - add di,si - xor ebx,ebx - mov ecx,[(bmp_file si).bmp_height] - mov edx,[(bmp_file si).bmp_width] - ;and dx,11111100b - cmp edx,[(bmp_file si).bmp_width] - ;jae @@noadjust - ;add dx,4 -@@noadjust: - sub edx,[(bmp_file si).bmp_width] -@@bouclette: - push bx cx - add bx,[@x] - add cx,[@y] - call [cs:showpixel],bx,cx,[word ptr di] - pop cx bx - inc bx - inc di - cmp ebx,[(bmp_file si).bmp_width] - jb @@bouclette - xor bx,bx - ;add di,dx - dec cx - cmp cx,0 - jne @@bouclette - clc - ret -@@errorshowing: - stc - ret -ENDP showbmp - - -;==========LOADBMPPALET========= -;Charge la palette du BMP pointée par DS:%0 -;-> DS:%0 BMP -;<- -;=============================== -PROC loadbmppalet FAR - ARG @pointer:word - USES ax,bx,cx,dx,si - mov si,[@pointer] - mov bx,0400h+36h-4 - mov cx,100h - mov dx, 3c8h -@@paletteload: - mov al, cl - dec al - out dx, al - inc dx - mov al,[bx+si+2] - shr al,2 - out dx, al - mov al,[bx+si+1] - shr al,2 - out dx, al - mov al,[bx+si] - shr al,2 - out dx, al - sub bx,4 - dec dx - dec cl - jnz @@paletteload - ret -ENDP loadbmppalet - - diff --git a/lib/detect.asm b/lib/detect.asm deleted file mode 100644 index b268b83..0000000 --- a/lib/detect.asm +++ /dev/null @@ -1,762 +0,0 @@ -model tiny,stdcall -p586 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\cpu.h" -include "..\include\pci.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,,,> - -exporting -declare cpuinfo -declare setinfo -declare pciinfo -declare getpciclass -declare getpcisubclass -declare getcardinfo -declare pcireadbyte -declare pcireadword -declare pcireaddword -declare detectvmware -ende - -PROC detectvmware FAR - USES eax,ebx,ecx,edx - mov eax,564D5868h - mov ebx,12345h - mov ecx,00Ah - mov edx,5658h - in ax,dx - cmp ebx,564D5868h - ret -endp detectvmware - -;renvoie un pointer dx:ax vers la classe %0 -PROC getpciclass FAR - ARG @class:word - USES di - mov di,[@class] - and di,0FFh - shl di,1 - mov ax,[cs:offset classes+di] - mov dx,cs - ret -endp getpciclass - -;renvoie un pointer dx:ax vers la sous-classe de %1 et de classe %0 -PROC getpcisubclass FAR - ARG @class:word,@subclass:word - USES di - mov di,[@class] - and di,0FFh - shl di,1 - mov di,[cs:offset classesd+di] - mov dx,[@subclass] - and dx,0FFh - cmp dx,80h - jne @@suiteac - mov ax,offset divers - jmp @@found -@@suiteac: - shl dx,1 - add di,dx - mov ax,[cs:di] -@@found: - mov dx,cs - ret -endp getpcisubclass - -divers db 'divers',0 - -classes: -dw offset class0 -dw offset class1 -dw offset class2 -dw offset class3 -dw offset class4 -dw offset class5 -dw offset class6 -dw offset class7 -dw offset class8 -dw offset class9 -dw offset class10 -dw offset class11 -dw offset class12 -dw offset class13 -dw offset class14 -dw offset class15 -dw offset class16 -dw offset class17 -class0 db 'ancien',0 -class1 db 'stockage',0 -class2 db 'reseau',0 -class3 db 'affichage',0 -class4 db 'multimedia',0 -class5 db 'memoire',0 -class6 db 'pont',0 -class7 db 'communication',0 -class8 db 'systeme',0 -class9 db 'acquisition',0 -class10 db 'dock',0 -class11 db 'processeur',0 -class12 db 'bus serie',0 -class13 db 'sans fil',0 -class14 db 'intelligent',0 -class15 db 'satellite',0 -class16 db 'cryptage',0 -class17 db 'traitement signal',0 - - -;Classes et sous classes -classesd: -dw offset class0d -dw offset class1d -dw offset class2d -dw offset class3d -dw offset class4d -dw offset class5d -dw offset class6d -dw offset class7d -dw offset class8d -dw offset class9d -dw offset class10d -dw offset class11d -dw offset class12d -dw offset class13d -dw offset class14d -dw offset class15d -dw offset class16d -dw offset class17d - -class0d: -dw offset subclass00 -dw offset subclass01 -subclass00 db 'divers',0 -subclass01 db 'vga',0 - -class1d: -dw offset subclass10 -dw offset subclass11 -dw offset subclass12 -dw offset subclass13 -dw offset subclass14 -subclass10 db 'scsi',0 -subclass11 db 'ide',0 -subclass12 db 'disquette',0 -subclass13 db 'ipi',0 -subclass14 db 'raid',0 - -class2d: -dw offset subclass20 -dw offset subclass21 -dw offset subclass22 -dw offset subclass23 -dw offset subclass24 -subclass20 db 'ethernet',0 -subclass21 db 'token ring',0 -subclass22 db 'fddi',0 -subclass23 db 'atm',0 -subclass24 db 'isdn',0 - -class3d: -dw offset subclass30 -dw offset subclass31 -dw offset subclass32 -subclass30 db 'vga',0 -subclass31 db 'xga',0 -subclass32 db '3D',0 - -class4d: -dw offset subclass40 -dw offset subclass41 -dw offset subclass42 -subclass40 db 'video',0 -subclass41 db 'audio',0 -subclass42 db 'telephonie',0 - -class5d: -dw offset subclass50 -dw offset subclass51 -subclass50 db 'ram',0 -subclass51 db 'flash',0 - -class6d: -dw offset subclass60 -dw offset subclass61 -dw offset subclass62 -dw offset subclass63 -dw offset subclass64 -dw offset subclass65 -dw offset subclass66 -dw offset subclass67 -dw offset subclass68 -subclass60 db 'hote',0 -subclass61 db 'isa',0 -subclass62 db 'eisa',0 -subclass63 db 'mca',0 -subclass64 db 'pci',0 -subclass65 db 'pcmcia',0 -subclass66 db 'nubus',0 -subclass67 db 'cardbus',0 -subclass68 db 'RACEway',0 - -class7d: -dw offset subclass70 -dw offset subclass71 -dw offset subclass72 -dw offset subclass73 -subclass70 db 'serie',0 -subclass71 db 'parallele',0 -subclass72 db 'serie multiport',0 -subclass73 db 'modem',0 - -class8d: -dw offset subclass80 -dw offset subclass81 -dw offset subclass82 -dw offset subclass83 -dw offset subclass84 -subclass80 db 'pic',0 -subclass81 db 'dma',0 -subclass82 db 'timer',0 -subclass83 db 'rtc',0 -subclass84 db 'hotplug',0 - -class9d: -dw offset subclass90 -dw offset subclass91 -dw offset subclass92 -dw offset subclass93 -dw offset subclass94 -subclass90 db 'clavier',0 -subclass91 db 'stylo',0 -subclass92 db 'souris',0 -subclass93 db 'scanner',0 -subclass94 db 'joystick',0 - -class10d: -dw offset subclass100 -subclass100 db 'station',0 - -class11d: -dw offset subclass110 -dw offset subclass111 -dw offset subclass112 -dw offset subclass113 -dw offset subclass114 -subclass110 db '386',0 -subclass111 db '486',0 -subclass112 db 'pentium',0 -subclass113 db 'alpha',0 -subclass114 db 'coprocesseur',0 - -class12d: -dw offset subclass120 -dw offset subclass121 -dw offset subclass122 -dw offset subclass123 -dw offset subclass124 -dw offset subclass125 -subclass120 db 'firewire',0 -subclass121 db 'access',0 -subclass122 db 'ssa',0 -subclass123 db 'usb',0 -subclass124 db 'fibre',0 -subclass125 db 'smbus',0 - -class13d: -dw offset subclass130 -dw offset subclass131 -dw offset subclass132 -subclass130 db 'irda',0 -subclass131 db 'ir',0 -subclass132 db 'rf',0 - -class14d: -dw offset subclass140 -subclass140 db 'IO arch',0 - -class15d: -dw offset subclass150 -dw offset subclass151 -dw offset subclass152 -dw offset subclass153 -subclass150 db 'tv',0 -subclass151 db 'audio',0 -subclass152 db 'voix',0 -subclass153 db 'donnees',0 - -class16d: -dw offset subclass160 -dw offset subclass161 -subclass160 db 'reseau',0 -subclass161 db 'jeux',0 - -class17d: -dw offset subclass170 -subclass170 db 'dpio',0 - - -;al=bus cl=deviceid ch=func es:di -PROC getcardinfo FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES eax,bx,di - mov di,[@pointer] - cmp [@function],0 - je @@amultiorfirst - call pcireadbyte,[@bus],[@device],0,offset (pcidata).typed - and al,multifunction - cmp al,0 - jne @@amultiorfirst - mov [word ptr di],0000h - jmp @@notexist -@@amultiorfirst: - xor bx,bx -@@goinfos: - call pcireadword,[@bus],[@device],[@function],bx - inc bl - inc bl - cmp bl,2 - ja @@notzarb - cmp ax,0FFFFh - je @@notexist - cmp ax,00000h - je @@notexist -@@notzarb: - mov [ds:di],ax - inc di - inc di - cmp bl,40h - jbe @@goinfos - clc - ret -@@notexist: - stc - ret -endp getcardinfo - -;lit un octet du bus %0 device %1 function %2 nø %3 et le met en AL -PROC pcireadbyte FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES bx,dx - mov al,[byte ptr @bus] - mov ah,80h - shl eax,16 - mov ah,[byte ptr @device] - shl ah,3 - or ah,[byte ptr @function] - mov bl,[byte ptr @pointer] - mov al,bl - and al,0fch - mov dx,config1addr - out dx,eax - mov dx,config1data - and bl,3 - or dl,bl - in al,dx - ret -endp pcireadbyte - -;lit 2 octet du bus %0 device %1 function %2 nø %3 et le met en AX -PROC pcireadword FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES bx,dx - mov al,[byte ptr @bus] - mov ah,80h - shl eax,16 - mov ah,[byte ptr @device] - shl ah,3 - or ah,[byte ptr @function] - mov bl,[byte ptr @pointer] - mov al,bl - and al,0fch - mov dx,config1addr - out dx,eax - mov dx,config1data - and bl,3 - or dl,bl - in ax,dx - ret -endp pcireadword - -;lit 4 octet du bus %0 device %1 function %2 nø %3 et le met en EAX -PROC pcireaddword FAR - ARG @bus:word,@device:word,@function:word,@pointer:word - USES bx,dx - mov al,[byte ptr @bus] - mov ah,80h - shl eax,16 - mov ah,[byte ptr @device] - shl ah,3 - or ah,[byte ptr @function] - mov bl,[byte ptr @pointer] - mov al,bl - and al,0fch - mov dx,config1addr - out dx,eax - mov dx,config1data - and bl,3 - or dl,bl - in eax,dx - ret -endp pcireaddword - -;Prob avec str pci -;renvoie en %0 la structure pciinf carry if error -PROC pciinfo FAR - ARG @pointer:word - USES ax,bx,cx,edx,edi - mov ax,0B101h - xor edi,edi - mov edx," PCI" - int 1Ah - jc @@errorpci - cmp dx,04350h - jne @@errorpci - cmp ah,0 - jne @@errorpci - mov di,[@pointer] - mov [(pciinf di).version_major],bh - mov [(pciinf di).version_minor],bl - mov [(pciinf di).types],al - mov [(pciinf di).maxbus],cl - clc - ret -@@errorpci: - stc - ret -endp pciinfo - - -;retourne en DS:%1 les set supporté du processeur par rapport a la struct %0 -PROC setinfo FAR - ARG @pointer:word,@set:word - USES bx,si,di - mov di,[@set] - lea si,[ds:cpu.mmx] - add si,[@pointer] - mov bx,offset @@theset -@@set: - cmp [word ptr cs:bx],0FFFFh - je @@endofset - cmp [byte ptr si],1 - jne @@nextset - push bx - mov bx,[cs:bx] -@@put: - mov al,[cs:bx] - cmp al,0 - je @@enofput - mov [di],al - inc bx - inc di - jmp @@put -@@enofput: - pop bx - @@nextset: - inc bx - inc bx - inc si - jmp @@set - @@endofset: - mov [byte ptr di],0 - ret - -@@theset dw offset @@mmx - dw offset @@mmx2 - dw offset @@sse - dw offset @@sse2 - dw offset @@sse3 - dw offset @@fpu - dw offset @@now3d - dw offset @@now3d2 - dw offset @@htt - dw offset @@apic - dw 0FFFFh - -@@mmx db "MMX ",0 -@@mmx2 db "MMX2 ",0 -@@now3d db "3dNow! ",0 -@@now3d2 db "3dNow Extended! ",0 -@@htt db "HyperThreading",0 -@@sse db "SSE ",0 -@@sse2 db "SSE2 ",0 -@@sse3 db "SSE3 ",0 -@@apic db "APIC ",0 -@@fpu db "FPU ",0 - -endp setinfo - -;retourne en DS:%0 les capacités du processeur -PROC cpuinfo FAR - ARG @pointer:word - USES eax,ebx,ecx,edx,si,di,ds,es - push ds - pop es - mov di,[@pointer] - mov al,0 - mov cx,size cpu - cld - rep stosb - mov di,[@pointer] - call nocpuid ;Test si cpuid est dispo - je @@nocpuidatall - xor eax,eax - cpuid ;Fonction 0 de CPUID - mov [dword ptr (cpu di).vendor],ebx ;Vendeur sur 13 octets - mov [dword ptr (cpu di+4).vendor],edx - mov [dword ptr (cpu di+8).vendor],ecx - mov [byte ptr (cpu di+12).vendor],0 - cmp eax,1 - jb @@nofonc1 - mov eax,1 - cpuid ;Fonction 1 de CPUID - mov ebx,eax ;infos de model - and ebx,1111b - mov [(cpu di).stepping],bl - shr eax,4 - mov ebx,eax - and ebx,1111b - mov [(cpu di).models],bl - shr eax,4 - mov ebx,eax - and ebx,1111b - mov [(cpu di).family],bl - shr eax,4 - mov ebx,eax - and ebx,11b - mov [(cpu di).types],bl - shr eax,2 - mov ebx,eax - and ebx,1111b - mov [(cpu di).emodels],bl - shr eax,4 - mov [(cpu di).efamily],al - mov ebx,edx - and ebx,1 ;infos de jeu d'instruction - setnz [(cpu di).fpu] - mov ebx,edx - and ebx,100000000000000000000000b - setnz [(cpu di).mmx] - mov ebx,edx - and ebx,10000000000000000000000000b - setnz [(cpu di).sse] - mov ebx,edx - and ebx,100000000000000000000000000b - setnz [(cpu di).sse2] - mov ebx,ecx - and ebx,1b - setnz [(cpu di).sse3] - mov ebx,edx - and ebx,10000000000000000000000000000b - setnz [(cpu di).htt] -@@nofonc1: - mov eax,80000000h ;Fonction 80000000 de CPUID - cpuid - cmp eax,80000001h - jb @@nofonc8 - mov eax,80000001h ;Fonction 80000000 de CPUID - cpuid - mov ebx,edx - and ebx,10000000000000000000000b - setnz [(cpu di).mmx2] - mov ebx,edx - and ebx,1000000000000000000000000000000b - setnz [(cpu di).now3d] - mov ebx,edx - and ebx,10000000000000000000000000000000b - setnz [(cpu di).now3d2] - mov ebx,edx - and ebx,1000000000b - setnz [(cpu di).apic] -@@nofonc8: - mov si,offset @@marks - push cs - pop ds -@@search: - mov di,[@pointer] - mov cx,12 - cld - rep cmpsb - jne @@notthegood - cmp cx,0 - jne @@notthegood - mov cl,[si] - inc si - mov di,[@pointer] - cld - rep movsb - mov al,0 - stosb - mov di,[@pointer] - cmp [es:(cpu di).family],15 - jne @@notextended - mov al,[es:(cpu di).efamily] - mov ah,[es:(cpu di).emodels] - mov di,[si+2] - jmp @@searchmodel -@@notextended: - mov al,[es:(cpu di).family] - mov ah,[es:(cpu di).models] - mov di,[si] -@@searchmodel: - cmp [di],ax - jne @@notgoodfamily - mov si,di - inc si - inc si - lea di,[es:cpu.names] - add di,[@pointer] -@@copystr: - mov al,[si] - mov [es:di],al - inc si - inc di - cmp al,0 - jne @@copystr - jmp @@endofsearch -@@notgoodfamily: - inc di -@@nextelement: - inc di - cmp [byte ptr di-1],0 - jne @@nextelement - jmp @@searchmodel -@@notthegood: - inc si - cmp [word ptr si],0FFFFh - jne @@notthegood - inc si - inc si - cmp [word ptr si],0FFFFh - je @@endofsearch - jmp @@search -@@endofsearch: - ret -@@nocpuidatall: - ret - -;tableau avec vendeur taille + chainereelle + pointeur famille + pointeur famille etendue - -@@marks db "GenuineIntel",5,"Intel" - dw @@intelfamily,@@intelfamilye - dw 0FFFFh - - db "AuthenticAMD",3,"Amd" - dw @@amdfamily,@@amdfamilye - dw 0FFFFh - - db "CyrixInstead",5,"Cyrix" - dw @@cyrixfamily,@@cyrixfamilye - dw 0FFFFh - dw 0FFFFh - - -;tableau avec famille modele et chaine 0 - -@@intelfamily: -db 4,0,"486 DX-25/33",0 -db 4,1,"486 DX-50",0 -db 4,2,"486 SX",0 -db 4,3,"486 DX/2",0 -db 4,4,"486 SL",0 -db 4,5,"486 SX/2",0 -db 4,7,"486 DX/2-WB",0 -db 4,8,"486 DX/4",0 -db 4,9,"486 DX/4-WB",0 -db 5,0,"Pentium 60/66 A-step",0 -db 5,1,"Pentium 60/66",0 -db 5,2,"Pentium 75 - 200",0 -db 5,3,"OverDrive PODP5V83",0 -db 5,4,"Pentium MMX",0 -db 5,7,"Mobile Pentium 75-200",0 -db 5,8,"Mobile Pentium MMX",0 -db 6,0,"Pentium Pro A-step",0 -db 6,1,"Pentium Pro",0 -db 6,3,"Pentium II (Klamath)",0 -db 6,5,"Pentium II (Deschutes)",0 -db 6,6,"Mobile Pentium II",0 -db 6,7,"Pentium III (Katmai)",0 -db 6,8,"Pentium III (Coppermine)",0 -db 6,9,"Mobile Pentium III",0 -db 6,10,"Pentium III (0.18 µm)",0 -db 6,11,"Pentium III (0.13 µm)",0 -db 7,0,"Itanium (IA-64)",0 -db 0FFh,0FFh,"Inconnu",0 - -@@intelfamilye: -db 0,0,"Pentium IV (0.18 µm)",0 -db 0,1,"Pentium IV (0.18 µm)",0 -db 0,2,"Pentium IV (0.13 µm)",0 -db 0,3,"Pentium IV (0.09 µm)",0 -db 1,0,"Itanium 2 (IA-64)",0 -db 0FFh,0FFh,"Inconnu",0 - -@@amdfamily: -db 4,3,"486 DX/2",0 -db 4,7,"486 DX/2-WB",0 -db 4,8,"486 DX/4",0 -db 4,9,"486 DX/4-WB",0 -db 4,14,"Am5x86-WT",0 -db 4,15,"Am5x86-WB",0 -db 5,0,"K5/SSA5",0 -db 5,1,"K5 (PR120/133)",0 -db 5,2,"K5 (PR166)",0 -db 5,3,"K5 (PR200)",0 -db 5,6,"K6 (0.30 µm)",0 -db 5,7,"K6 (0.25 µm)",0 -db 5,8,"K6-2",0 -db 5,9,"K6-3",0 -db 5,13,"K6-2+/K6-III+ (0.18 µm)",0 -db 6,0,"Athlon (25 µm)",0 -db 6,1,"Athlon (25 µm)",0 -db 6,2,"Athlon (18 µm)",0 -db 6,3,"Duron",0 -db 6,4,"Athlon (Thunderbird)",0 -db 6,6,"Athlon (Palamino)",0 -db 6,7,"Duron (Morgan)",0 -db 6,8,"Athlon (Thoroughbred)",0 -db 6,10,"Athlon (Barton)",0 -db 0FFh,0FFh,"Inconnu",0 - -@@amdfamilye: -db 0,4,"Athlon 64",0 -db 0,5,"Athlon 64 FX/Opteron",0 -db 0FFh,0FFh,"Inconnu",0 - -@@cyrixfamily: -db 4,4,"MediaGX",0 -db 5,2,"6x86/6x86L",0 -db 5,4,"MediaGX MMX Enhanced",0 -db 6,0,"MII (6x86MX)",0 -db 6,5,"VIA Cyrix M2 core",0 -db 6,6,"WinChip C5A",0 -db 6,7,"WinChip C5B/WinChip C5C",0 -db 6,8,"WinChip C5N",0 -db 6,9,"WinChip C5XL/WinChip C5P",0 -db 0FFh,0FFh,"Inconnu",0 - -@@cyrixfamilye: -db 0FFh,0FFh,"Inconnu",0 - -endp cpuinfo - -;Test si CPUID est supporté oui=not Equal -nocpuid: - pushfd - pop eax - xor eax,00200000h - push eax - popfd - pushfd - pop eax - cmp eax,ebx - ret - - diff --git a/lib/str0.asm b/lib/str0.asm deleted file mode 100644 index 2e6aefa..0000000 --- a/lib/str0.asm +++ /dev/null @@ -1,993 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,,,> - - -exporting -declare checksyntax -declare cmpitems -declare gettypeditem -declare gettyped -declare whatisitem -declare whatis -declare strtoadress -declare strisadress -declare strisname -declare strisbase -declare strtoint -declare left -declare right -declare middle -declare fill -declare replaceallchar -declare searchchar -declare invert -declare cmpstr -declare evalue -declare insert -declare delete -declare copy -declare concat -declare compressdelimiter -declare setnbitems -declare getitemsize -declare getitem -declare getpointeritem -declare getnbitems -declare getlength -declare setlength -declare uppercase -declare onecase -declare lowercase -declare invertcase -ende - -;Librairie qui prend en charge le format de STR ASCIIZ -;# nombre 8 -;? str 7 -;& nom 6 - -;High Low -;0 variable 4 hex -;1 byte 3 dec -;2 word 2 oct -;3 3 octets 1 bin -;4 dword 5 adresse -;5 5 octets 6 nom -;6 ... 7 str - ; 8 nombre - -;Renvoie carry si la syntaxe de ds:si n'est pas respect‚ par rapport a es:di -PROC checksyntax FAR - ARG @src:word,@dest:word,@delim:word - USES ax,bx,cx,dx,si,di,ds,es - LOCAL @@temp:word:256 - push ss - pop es - lea si,[@@temp] - mov di,[@dest] - call copy,[@src],si - call xch - call compressdelimiter,si,[@delim] - call getnbitems,si,[@delim] - mov bx,ax - call xch - call getnbitems,di,[@delim] - cmp bx,ax - jne @@notequalatall - xor cx,cx -@@itemer: - call xch - call whatisitem,si,cx,[@delim] - mov dx,ax - call xch - call whatisitem,di,cx,[@delim] - cmp ax,dx - jne @@prob - cmp al,6 - jb @@equal - call cmpitems - je @@equal -@@prob: - cmp dl,4 - ja @@nonumber - cmp dl,8 - je @@equal - ;cmp al,4 - ;jne @@notequalatall - cmp dh,ah - ja @@notequalatall - jmp @@equal -@@nonumber: - cmp al,7 - jne @@nostr - cmp ah,0 - jne @@notequalatall - jmp @@equal -@@nostr: - cmp al,6 - jne @@noname - cmp dl,6 - jne @@noname - cmp ah,0 - jne @@notequalatall - jmp @@equal -@@noname: - cmp al,8 - je @@equal - jmp @@notequalatall -@@equal: - inc cx - cmp cx,bx - jne @@itemer - cld -@@ackno: - ret -@@notequalatall: - stc - jmp @@ackno -endp checksyntax - -xch: - push es - push ds - pop es - pop ds - ret - - -;Compare les ‚l‚ments cx de deux chaine ds:si et es:di -PROC cmpitems FAR - ARG @src:word,@dest:word,@item:word,@delim:word - USES ax,cx,si,di,es - push ds - pop es - call getpointeritem,[@src],[@item],[@delim] - mov si,ax - call getitemsize,[@src],[@item],[@delim] - mov di,[@dest] - mov cx,ax - cld - rep cmpsb - clc - ret -endp cmpitems - - -;Renvoie l'‚l‚ment cx de ds:si dans edx si nb et dans es:di si str ou name -PROC gettypeditem FAR - ARG @src:word,@item:word,@delim:word - USES bx,cx,si,di - mov si,[@src] - mov cx,[@item] - call getpointeritem,si,cx,[@delim] - mov di,ax - inc cx - call getpointeritem,si,cx,[@delim] - mov si,ax - dec si - mov cl,0 - xchg cl,[ds:si] - call gettyped,di - xchg cl,[ds:si] - clc - ret -endp gettypeditem - - -;Renvoie eax si nb et dans ds:eax si str ou name -PROC gettyped FAR - ARG @src:word - USES si - mov si,[@src] - xor eax,eax - call whatis,si - cmp al,1 - je @@bin - cmp al,2 - je @@oct - cmp al,3 - je @@dec - cmp al,4 - je @@hex - cmp al,5 - je @@pointer - mov ax,si - jmp @@endofgettypeditem -@@bin: - call strtoint,si,2 - jmp @@endofgettypeditem -@@oct: - call strtoint,si,8 - jmp @@endofgettypeditem -@@dec: - call strtoint,si,10 - jmp @@endofgettypeditem -@@hex: - call strtoint,si,16 - jmp @@endofgettypeditem -@@pointer: - call strtoadress,si -@@endofgettypeditem: - clc - ret -endp gettyped - -;Renvoie dans ax le type de la str0 point‚e par ds:%0 ‚l‚ment %1 delim %3 -PROC whatisitem FAR - ARG @src:word,@item:word,@delim:word - USES bx,cx,si,di - mov si,[@src] - mov cx,[@item] - call getpointeritem,si,cx,[@delim] - mov di,ax - inc cx - call getpointeritem,si,cx,[@delim] - mov si,ax - dec si - mov cl,0 - xchg cl,[ds:si] - call whatis,di - xchg cl,[ds:si] - clc - ret -endp whatisitem - -;Renvoie dans ax le type de la str0 point‚e par ds:%0 -;High Low -;0 variable 4 hex -;1 byte 3 dec -;2 word 2 oct -;3 3 octets 1 bin -;4 dword 5 adresse -;5 5 octets 6 name -;6 ... 7 str -PROC whatis FAR - ARG @src:word - USES bx,cx,edx,si - mov si,[@src] - xor cx,cx - mov cl,2 - call strisbase,si,cx - jnc @@finbase - mov cl,8 - call strisbase,si,cx - jnc @@finbase - mov cl,10 - call strisbase,si,cx - jnc @@finbase - mov cl,16 - call strisbase,si,cx - jc @@testadress -@@finbase: - mov bx,cx - xor ch,ch - mov al,[cs:bx+offset basenn-2] - push eax - call strtoint,si,cx - mov edx,eax - pop eax - cmp edx,0000FFFFh - ja @@bits32 - cmp dx,00FFh - ja @@bits16 - mov ah,1 - jmp @@endofwhat -@@bits16: - mov ah,2 - jmp @@endofwhat -@@bits32: - mov ah,4 - jmp @@endofwhat -@@testadress: - call strisadress,si - jc @@testname - mov ax,0005h - jmp @@endofwhat -@@testname: - call strisname - jc @@testnumber - xor ah,ah - cmp [byte ptr si],'&' - je @@okname - call getlength,si - mov ah,al -@@okname: - mov al,06h - jmp @@endofwhat -@@testnumber: - cmp [byte ptr si],'#' - jne @@testvarstr - xor ah,ah - mov al,08h - jmp @@endofwhat -@@testvarstr: - xor ah,ah - cmp [byte ptr si],'?' - je @@okvarstr - call getlength,si - mov ah,al -@@okvarstr: - mov al,07h -@@endofwhat: - clc - ret -endp whatis - - - -;Renvoie non carry si la str ds:si point‚e peut ˆtre une adresse -PROC strtoadress FAR - ;push - stc - ;pop - ret -endp strtoadress - - -;Renvoie en es:di le pointeur str0 ds:si -PROC strisadress FAR - ;push - stc - ;pop - ret -endp strisadress - -;Renvoie non carry si la str ds:%0 point‚e peut ˆtre un nom de fichier -PROC strisname FAR - ARG @src:word - USES ax,si,di - mov si,[@src] -@@isname: - mov al,[si] - inc si - cmp al,0 - je @@itsok - mov di,offset non -@@verify: - mov ah,[cs:di] - inc di - cmp ah,0FFh - je @@isname - cmp ah,al - jne @@verify - stc - jmp @@itsdead -@@itsok: - clc -@@itsdead: - ret -endp strisname - -non db '/<>|"?*:\',01,0FFh - -;Renvoie non carry si le texte point‚ par %0 est de la base %1 -PROC strisbase FAR - ARG @src:word,@base:word - USES ax,cx,si,di,es - push cs - pop es - mov si,[@src] -@@isstrbase: - mov al,[si] - cmp al,0 - je @@okbase - mov cx,[@base] - xor ch,ch - mov di,cx - cmp al,[es:di-2+offset basen] - je @@verifbase - xor ch,ch - inc cl - mov di,offset base - cld - repne scasb - cmp cx,0 - je @@nobase - inc si - jmp @@isstrbase -@@okbase: - clc -@@endbase: - ret -@@verifbase: - cmp [byte ptr si+1],0 - je @@okbase -@@nobase: - stc - jmp @@endbase -endp strisbase - -base db '0123456789ABCDEF' -basen db 'b o d h' -basenn db 1,0,0,0,0,0,2,0,3,0,0,0,0,0,4 - - -;Converti un str %0 de base %1 en int dans eax -PROC strtoint FAR - ARG @src:word,@base:word - USES ebx,ecx,edx,si,edi,es - push cs - pop es - mov si,[@src] -@@gotos: - cmp [byte ptr si+1], 0 - je @@oklo - inc si - jmp @@gotos -@@oklo: - mov edi,1 - xor ebx,ebx -@@baseto: - cmp [@src],si - ja @@endbaseto - mov al,[si] - xor ecx,ecx - mov cl,[byte ptr @base] - inc cl - push di - mov di,offset base - cld - repne scasb - pop di - jne @@noop - sub cl,[byte ptr @base] - neg cl - mov eax,edi - mul ecx - add ebx,eax - mov eax,edi - mov cl,[byte ptr @base] - mul ecx - mov edi,eax -@@noop: - dec si - jmp @@baseto -@@endbaseto: - mov eax,ebx - clc - ret -endp strtoint - - -;Renvoie en ds:%1 la partie de %2 caractŠres a partir de la gauche de ds:%0 -PROC left FAR - ARG @src:word,@dest:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - mov cx,[@nb] - cld - rep movsb - mov al,0 - stosb - clc - ret -endp left - -;Renvoie en ds:%1 la partie de %2 caractŠres a partir de la droite de ds:%0 -PROC right FAR - ARG @src:word,@dest:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - call getlength,si - add si,ax - sub si,[@nb] - mov cx,[@nb] - cld - rep movsb - mov al,0 - stosb - clc - ret -endp right - -;Renvoie en ds:%1 la partie de %3 caractŠres a partir de la position %2 de ds:%0 -PROC middle FAR - ARG @src:word,@dest:word,@item:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - mov cx,[@nb] - add si,[@item] - cld - rep movsb - mov al,0 - stosb - clc - ret -endp middle - -;Rempli de %3 caractŠres %2 a partir de la position %1 de ds:%0 -PROC fill FAR - ARG @src:word,@item:word,@char:word,@nb:word - USES ax,cx,si,di,es - push ds - pop es - mov di,[@src] - add di,[@item] - mov ax,[@char] - mov cx,[@nb] - cld - rep stosb - clc - ret -endp fill - -;Remplace tout les caractŠres %1 de ds:%0 par des caractŠres %2 -PROC replaceallchar FAR - ARG @src:word,@char1:word,@char2:word - USES ax,cx,dx,di,es - mov di,[@src] - call getlength,di - mov cx,ax - mov ax,[@char1] - mov dx,[@char2] - push ds - pop es -@@findandchange: - repne scasb - cmp cx,0 - je @@endofchange - mov [es:di-1],dl - jmp @@findandchange -@@endofchange: - clc - ret -endp replaceallchar - -;Recherche un caractŠre dl dans la chaŒne ds:%0 -PROC searchchar FAR - ARG @src:word,@char:word - USES cx,di,es - mov di,[@src] - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@char] - repne scasb - mov ax,di - dec ax - clc - ret -endp searchchar - -;Inverse la chaine point‚e en ds:%0 -PROC invert FAR - ARG @src:word - USES ax,cx,si,di - mov si,[@src] - call getlength,si - mov di,si - add di,ax - dec di -@@revert: - mov al,[si] - xchg al,[di] - mov [si],al - inc si - dec di - cmp si,di - ja @@finishinvert - dec di - cmp si,di - ja @@finishinvert - inc di - jmp @@revert -@@finishinvert: - clc - ret -endp invert - -;Compares 2 chaines de caractŠres DS:%0 et DS:%1 zerof si non equal -PROC cmpstr FAR - ARG @src:word,@dest:word - USES cx,dx,si,di - push ds - pop es - mov si,[@src] - mov di,[@dest] - call getlength,di - mov cx,ax - call getlength,si - cmp cx,ax - jne @@notequal - repe cmpsb -@@notequal: - ret -endp cmpstr - -;Compares 2 chaines de caractŠres DS:%0 et DS:%1 zerof si non equal et renvoie le nb de caractŠre egaux dans ax -PROC evalue FAR - ARG @src:word,@dest:word - USES cx,si,di,es - push ds - pop es - mov si,[@src] - mov di,[@dest] - call getlength ,di - mov cx,ax - repe cmpsb - pushf - jne @@noident - sub ax,cx - popf - clc - ret -@@noident: - sub ax,cx - dec ax - popf - clc - ret -endp evalue - -;Insert une chaine ds:%0 en ds:%1 a partir du caractŠre %2 -PROC insert FAR - ARG @src:word,@dest:word,@item:word - USES ax,cx,si,di,es - push es - pop ds - mov si,[@dest] - call getlength,si - mov cx,ax - add si,ax - mov di,si - call getlength,[@src] - add di,ax - sub cx,[@item] - inc cx - std - rep movsb - mov si,[@src] - mov di,[@dest] - add di,[@item] - mov cx,ax - cld - rep movsb - clc - ret -endp insert - - -;Detruit %2 caractŠres a partir du caractŠre %1 de DS:%0 -PROC delete FAR - ARG @src:word,@item:word,@size:word - USES ax,cx,dx,si,di,es - push ds - pop es - mov si,[@src] - call getlength,si - mov cx,ax - sub cx,[@size] - sub cx,[@item] - inc cx - add si,[@item] - mov di,si - add si,[@size] - cld - rep movsb - clc - ret -endp delete - -;Copie une chaine de ds:si en es:di -PROC copy FAR - ARG @src:word,@dest:word - USES ax,cx,si,di - mov si,[@src] - mov di,[@dest] - call getlength,si - mov cx,ax - cld - rep movsb - mov al,0 - stosb - clc - ret -endp copy - - -;ConcatŠne le chaine ds:si avec ds:di -PROC concat FAR - ARG @src:word,@dest:word - USES ax,cx,si,di,es - push ds - pop es - mov si,[@src] - call getlength,si - mov cx,ax - mov di,[@dest] - call getlength,di - add di,ax - cld - rep movsb - mov al,0 - stosb - clc - ret -endp concat - - -;D‚truit les d‚limiteur qui sont cons‚cutifs dans ds:%0 -> renvoie le nb d'item -PROC compressdelimiter FAR - ARG @src:word,@delim:word - USES cx,dx,si,di,es - mov di,[@src] - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@delim] - xor dx,dx -@@compressitems: - repne scasb - inc dx -@@againcomp: - cmp [di],al - jne @@nosup - call delete,di,0,1 - jmp @@againcomp -@@nosup: - cmp cx,0 - jne @@compressitems - mov ax,dx - clc - ret -endp compressdelimiter - -;Met le nombre d'‚l‚ments de ds:%0 à %1 -PROC setnbitems FAR - ARG @src:word,@size:word,@delim:word - USES ax,cx,di,es - mov di,[@src] - cmp [@size],0 - je @@onlyzero - call getnbitems,di,[@delim] - cmp [@size],ax - je @@noadjust - jb @@subsome - push ds - pop es - sub ax,[@size] - neg ax - mov cx,ax - call getlength,di - add di,ax - mov ax,[@delim] - mov ah,'a' - rep stosw - xor al,al - stosb - jmp @@noadjust -@@subsome: - call getpointeritem,[@src],[@size],[@delim] - dec ax - mov di,ax -@@onlyzero: - mov [byte ptr di],0 -@@noadjust: - clc - ret -endp setnbitems - -;Renvoie la taille ax de l'‚l‚ment %0 -PROC getitemsize FAR - ARG @src:word,@item:word,@delim:word - USES cx,dx - mov cx,[@item] - call getpointeritem,[@src],cx,[@delim] - mov dx,ax - inc cx - call getpointeritem,[@src],cx,[@delim] - sub ax,dx - dec ax - clc - ret -endp getitemsize - -;Renvoie en ds:%1 l'‚l‚ment %2 de ds:%0 -PROC getitem FAR - ARG @src:word,@dest:word,@item:word,@delim:word - USES ax,cx,si,di,es - push ds - pop es - call getpointeritem,[@src],[@item],[@delim] - mov si,ax - call getitemsize,[@src],[@item],[@delim] - mov di,[@dest] - mov cx,ax - cld - rep movsb - mov al,0 - stosb - clc - ret -endp getitem - -;renvoi un pointeur ax sur l'‚l‚ment %1 de ds:%0 -PROC getpointeritem FAR - ARG @src:word,@item:word,@delim:word - USES cx,dx,di,es - mov di,[@src] - cmp [@item],0 - je @@finishpointer - push ds - pop es - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@delim] - xor dx,dx -@@countnbitems: - cmp [@item],dx - je @@finishpointer - cld - repne scasb - inc dx - cmp cx,0 - jne @@countnbitems - inc di -@@finishpointer: - mov ax,di - clc - ret -endp getpointeritem - -;Renvoie le nombre d'‚l‚ments ax de ds:%0 -PROC getnbitems FAR - ARG @src:word,@delim:word - USES cx,dx,di,es - mov di,[@src] - call getlength,di - mov cx,ax - push ds - pop es - mov ax,[@delim] - xor dx,dx - cld -@@countitems: - repne scasb - inc dx - cmp cx,0 - jne @@countitems - mov ax,dx - clc - ret -endp getnbitems - -;renvoie la taille en octets AX de la chaine point‚e en ds:%0 -PROC getlength FAR - ARG @src:word - USES cx,di,es - push ds - pop es - mov di,[@src] - mov al,0 - mov cx,0FFFFh - cld - repne scasb - neg cx - dec cx - dec cx - mov ax,cx - clc - ret -endp getlength - -;Met la taille en octets de la chaine point‚e ds:%0 a %1 -PROC setlength FAR - ARG @src:word,@size:word - USES si - mov si,[@src] - add si,[@size] - mov [byte ptr si],0 - clc - ret -endp setlength - -;met en majuscule la chaine ds:%0 -PROC uppercase FAR - ARG @src:word - USES si,ax - mov si,[@src] -@@uppercase: - mov al,[ds:si] - inc si - cmp al,0 - je @@enduppercase - cmp al,'a' - jb @@uppercase - cmp al,'z' - ja @@uppercase - sub [byte ptr si-1],'a'-'A' - jmp @@uppercase -@@enduppercase: - clc - ret -endp uppercase - -;met en majuscule la premiŠre lettre chaine ds:%0 -PROC onecase FAR - ARG @src:word - USES ax - mov si,[@src] - mov al,[ds:si] - cmp al,'a' - jb @@oneenduppercase - cmp al,'z' - ja @@oneenduppercase - sub [byte ptr si],'a'-'A' -@@oneenduppercase: - clc - ret -endp onecase - -;met en minuscule la chaine ds:%0 -PROC lowercase FAR - ARG @src:word - USES si,ax - mov si,[@src] -@@lowercase: - mov al,[ds:si] - inc si - cmp al,0 - je @@endlowercase - cmp al,'A' - jb @@lowercase - cmp al,'Z' - ja @@lowercase - add [byte ptr si-1],'a'-'A' - jmp @@lowercase -@@endlowercase: - clc - ret -endp lowercase - -;Inverse la casse la chaine ds:%0 -PROC invertcase FAR - ARG @src:word - USES si,ax - mov si,[@src] -@@invertcase: - mov al,[ds:si] - inc si - cmp al,0 - je @@endinvertcase - cmp al,'A' - jb @@invertcase - cmp al,'Z' - jbe @@goinvertcase - cmp al,'a' - jb @@invertcase - cmp al,'z' - ja @@invertcase - sub [byte ptr si-1],'a'-'A' - jmp @@invertcase -@@goinvertcase: - add [byte ptr si-1],'a'-'A' - jmp @@invertcase -@@endinvertcase: - clc - ret -endp invertcase - diff --git a/lib/video.asm b/lib/video.asm deleted file mode 100644 index f1b22d6..0000000 --- a/lib/video.asm +++ /dev/null @@ -1,891 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,offset imports,,> - -exporting -declare print -declare showdate -declare showtime -declare showname -declare showattr -declare showsize -declare showspace -declare showint -declare showsigned -declare showhex -declare showbin -declare showbcd -declare showstring -declare showstring0 -declare showintr -declare showintl -declare showchar -ende - -importing -use VIDEO,addline -use VIDEO,setcolor -use VIDEO,getxy -use VIDEO,setxy -use VIDEO,setvideomode -use VIDEO,setfont -use VIDEO,clearscreen -use VIDEO,enablescroll -use VIDEO,disablescroll -use VIDEO,showchars -use VIDEO,savestate -use VIDEO,restorestate -endi - - -;================PRINT============== -;Affiche la chaine %0 en utilisant les parametres de formatage %x....%x -;-> %0 %x -;<- -;=================================== -PROC print FAR - ARG @@pointer:word - push ax bx cx si di - xor di,di - mov si,[@@pointer] -@@strinaize0: - mov cl,[si] - cmp cl,0 - je @@no0 - cmp cl,'%' - je @@special - cmp cl,'\' - je @@special2 -@@showit: - xor ch,ch - call [cs:showchars],cx,0FFFFh - inc si - jmp @@strinaize0 -@@special: - cmp [byte ptr si+1],'%' - jne @@notshowit - inc si - jmp @@showit -@@notshowit: - mov cl,[byte ptr si+1] - cmp cl,'c' - je @@showchars - cmp cl,'u' - je @@showint - cmp cl,'v' - je @@showfixint - cmp cl,'w' - je @@showintr - cmp cl,'i' - je @@showsigned - cmp cl,'h' - je @@showhex - cmp cl,'b' - je @@showbin - cmp cl,'s' - je @@showstring - cmp cl,'0' - je @@showstring0 - cmp cl,'y' - je @@showbcd - cmp cl,'z' - je @@showsize - cmp cl,'a' - je @@showattr - cmp cl,'n' - je @@showname - cmp cl,'t' - je @@showtime - cmp cl,'d' - je @@showdate - clc - jmp @@no0 - -@@showchars: - cmp [byte ptr si+2],'M' - je @@showmultchar - call [cs:showchars],[word ptr @@pointer+di+2],0FFFFh - add si,2 - add di,2 - jmp @@strinaize0 -@@showmultchar: - mov cx,[offset @@pointer+di+2+2] - cmp cx,0 - je @@nextfunc -@@showcharsx: - call [cs:showchars],[word ptr @@pointer+di+2],0FFFFh - dec cx - jnz @@showcharsx -@@nextfunc: - add si,3 - add di,4 - jmp @@strinaize0 - -@@showint: - call showint,[dword ptr @@pointer+di+2] - add si,2 - add di,4 - jmp @@strinaize0 - -@@showfixint: - call showintl,[word ptr @@pointer+di+6],[dword ptr @@pointer+di+2] - add di,6 - add si,2 - jmp @@strinaize0 - -@@showintr: - call showintr,[word ptr @@pointer+di+6],[dword ptr @@pointer+di+2] - add di,6 - add si,2 - jmp @@strinaize0 - -@@showsigned: - call @@Chosesize - call showsigned - jmp @@strinaize0 - -@@showhex: - call @@Chosesize - call showhex - jmp @@strinaize0 - -@@showbin: - call @@Chosesize - call showbin - jmp @@strinaize0 - -@@showstring: - cmp [byte ptr si+2],'P' - je @@showstring@@pointer - call showstring,[word ptr @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 -@@showstring@@pointer: - push ds - mov ds,[offset @@pointer+di+2+2] - call showstring,[word ptr @@pointer+di+2] - add si,3 - add di,4 - pop ds - jmp @@strinaize0 - -@@showstring0: - cmp [byte ptr si+2],'P' - je @@showstring0@@pointer - call showstring0,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 -@@showstring0@@pointer: - push ds - mov ds,[offset @@pointer+di+2+2] - call showstring0,[word ptr offset @@pointer+di+2] - add si,3 - add di,4 - pop ds - jmp @@strinaize0 - -@@showbcd: - call @@Chosesize - call showbcd - jmp @@strinaize0 - -@@showsize: - call showsize,[dword ptr offset @@pointer+di+2] - add si,2 - add di,4 - jmp @@strinaize0 - -@@showattr: - call showattr,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@showname: - call showname,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@showtime: - call showtime,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@showdate: - call showdate,[word ptr offset @@pointer+di+2] - add si,2 - add di,2 - jmp @@strinaize0 - -@@Chosesize: - pop cx - push [dword ptr offset @@pointer+di+2] - add di,4 - cmp [byte ptr si+2],'B' - je @@byte - cmp [byte ptr si+2],'W' - je @@word - cmp [byte ptr si+2],'D' - je @@dword - dec si - -@@word: - push 16 - add si,3 - push cx - retn - -@@byte: - push 8 - add si,3 - push cx - retn - -@@dword: - push 32 - add si,3 - push cx - retn - -@@special2: - cmp [byte ptr si+1],'\' - jne @@notshowit2 - inc si - jmp @@showit -@@notshowit2: - mov cl,[byte ptr si+1] - cmp cl,'l' - je @@showline - cmp cl,'g' - je @@goto - cmp cl,'h' - je @@gotox - cmp cl,'c' - je @@color - cmp cl,'m' - je @@setvideomode - cmp cl,'e' - je @@clearscreen - cmp cl,'s' - je @@savestate - cmp cl,'r' - je @@restorestate - cmp cl,'i' - je @@enablescroll - cmp cl,'j' - je @@disablescroll - cmp cl,'f' - je @@setfont - clc - jmp @@no0 - -@@color: - mov al,[si+2] - sub al,'0' - shl al,4 - add al,[si+3] - sub al,'0' - xor ah,ah - call [cs:setcolor],ax - add si,4 - jmp @@strinaize0 - -@@gotox: - mov bh,[si+2] - sub bh,'0' - mov bl,bh - shl bl,3 - add bl,bh - add bl,bh - add bl,[si+3] - sub bl,'0' - xor bh,bh - call [cs:getxy] - xor ah,ah - call [cs:setxy],bx,ax - add si,4 - jmp @@strinaize0 - -@@setvideomode: - mov ah,[si+2] - sub ah,'0' - mov al,ah - shl al,3 - add al,ah - add al,ah - add al,[si+3] - sub al,'0' - xor ah,ah - call [cs:setvideomode],ax - add si,4 - jmp @@strinaize0 - -@@setfont: - mov ah,[si+2] - sub ah,'0' - mov al,ah - shl al,3 - add al,ah - add al,ah - add al,[si+3] - sub al,'0' - xor ah,ah - call [cs:setfont],ax - add si,4 - jmp @@strinaize0 - -@@showline: - call [cs:addline] - add si,2 - jmp @@strinaize0 - -@@clearscreen: - call [cs:clearscreen] - add si,2 - jmp @@strinaize0 - -@@savestate: - call [cs:savestate] - add si,2 - jmp @@strinaize0 - -@@restorestate: - call [cs:restorestate] - add si,2 - jmp @@strinaize0 - -@@enablescroll: - call [cs:enablescroll] - add si,2 - jmp @@strinaize0 - -@@disablescroll: - call [cs:disablescroll] - add si,2 - jmp @@strinaize0 - -@@goto: - mov ah,[si+2] - sub ah,'0' - mov al,ah - shl al,3 - add al,ah - add al,ah - add al,[si+3] - sub al,'0' - xor ah,ah - ; - mov bh,[si+5] - sub bh,'0' - mov bl,bh - shl bl,3 - add bl,bh - add bl,bh - add bl,[si+6] - sub bl,'0' - xor bh,bh - call [cs:setxy],ax,bx - add si,7 - jmp @@strinaize0 - -@@no0: - add di,bp - mov ax,[ss:bp] ;BP - mov bx,[ss:bp+2] ;IP - mov cx,[ss:bp+4] ;CS - mov [ss:di],ax - mov [ss:di+2],bx - mov [ss:di+4],cx - mov bp,di - pop di si cx bx ax - mov sp,bp - ret -ENDP print - - -;================SHOWDATE============== -;Affiche la date contenu en %0 -;-> %0 -;<- -;====================================== -PROC showdate FAR - ARG @dates:word - USES edx - xor edx,edx - mov dx,[@dates] - and dx,11111b - call showintl,2,edx - call [cs:showchars],'/',0FFFFh - mov dx,[@dates] - shr dx,5 - and dx,111b - call showintl,2,edx - call [cs:showchars],'/',0FFFFh - mov dx,[@dates] - shr dx,8 - and dx,11111111b - add dx,1956 - call showintl,2,edx - ret -ENDP showdate - -;================SHOWTIME============== -;Affiche l'heure contenu en %0 -;-> %0 -;<- -;====================================== -PROC showtime FAR - ARG @times:word - USES edx - xor edx,edx - mov dx,[@times] - shr dx,11 - and dx,11111b - call showintl,2,edx - call [cs:showchars],':',0FFFFh - mov dx,[@times] - shr dx,5 - and dx,111111b - call showintl,2,edx - call [cs:showchars],':',0FFFFh - mov dx,[@times] - and dx,11111b - shl dx,1 - call showintl,2,edx - ret -ENDP showtime - -;================SHOWNAME============== -;Affiche le nom pointé par ds:%0 -;-> ds:%0 -;<- -;====================================== -PROC showname FAR - ARG @thename:word - USES cx,si - mov si,[@thename] - xor cx,cx -@@showthename: - call [cs:showchars],[word ptr ds:si],0FFFFh - inc si - inc cx - cmp cx,8 - jne @@suiteaname - call [cs:showchars],' ',0FFFFh -@@suiteaname: - cmp cx,8+3 - jb @@showthename - ret -ENDP showname - -;================SHOWATTR============== -;Affiche les attributs spécifié par %0 -;-> %0 -;<- -;====================================== -PROC showattr FAR - ARG @attr:word - push 0FFFFh - test [@attr],00000001b - je @@noreadonly - push 'L' - jmp @@readonly -@@noreadonly: - push '-' -@@readonly: - call [cs:showchars] - push 0FFFFh - test [@attr],00000010b - je @@nohidden - push 'C' - jmp @@hidden -@@nohidden: - push '-' -@@hidden: - call [cs:showchars] - push 0FFFFh - test [@attr],00000100b - je @@nosystem - push 'S' - jmp @@system -@@nosystem: - push '-' -@@system: - call [cs:showchars] - push 0FFFFh - test [@attr],00100000b - je @@noarchive - push 'A' - jmp @@archive -@@noarchive: - push '-' -@@archive: - call [cs:showchars] - push 0FFFFh - test [@attr],00010000b - je @@nodirectory - push 'R' - jmp @@directory -@@nodirectory: - push '-' -@@directory: - call [cs:showchars] - ret -ENDP showattr - -;================SHOWSIZE============== -;Affiche le nom pointé par %0 -;-> %0 -;<- -;====================================== -PROC showsize FAR - ARG @thesize:dword - USES edx,ds - push cs - pop ds - mov edx,[@thesize] - cmp edx,1073741824 - ja @@giga - cmp edx,1048576*9 - ja @@mega - cmp edx,1024*9 - ja @@kilo - call showintr,4,edx - call showstring0,offset unit - jmp @@finsize -@@kilo: - shr edx,10 - call showintr,4,edx - call showstring0,offset unitkilo - jmp @@finsize -@@mega: - shr edx,20 - call showintr,4,edx - call showstring0,offset unitmega - jmp @@finsize -@@giga: - shr edx,30 - call showintr,4,edx - call showstring0,offset unitgiga -@@finsize: - ret - -unit db ' o ',0 -unitkilo db ' ko',0 -unitmega db ' mo',0 -unitgiga db ' go',0 -ENDP showsize - -;==========SHOWSPACE=========== -;met un espace aprés le curseur -;-> -;<- -;============================== -PROC showspace FAR - call [cs:showchars],' ',0FFFFh - clc - ret -ENDP showspace - - -;==========SHOWINT=========== -;Affiche un entier %0 aprés le curseur -;-> %0 -;<- -;============================ -PROC showint FAR - ARG @integer:dword - USES eax,bx,cx,edx,esi - xor cx,cx - mov eax,[@integer] - mov esi,10 - mov bx,offset showbuffer+27 -@@decint: - xor edx,edx - div esi - add dl,'0' - inc cx - mov [cs:bx],dl - dec bx - cmp ax,0 - jne @@decint - mov ax,cx -@@showinteger: - inc bx - mov cl,[cs:bx] - call [cs:showchars],cx,0FFFFh - dec ax - jnz @@showinteger - ret - -showbuffer db 50 dup (0FFh) -ENDP showint - -;==========SHOWINTL=========== -;Affiche un entier %0 aprés le curseur de taille %1 caractère centré a gauche -;-> %0 un entier % taille en caractères -;<- -;=============================== -PROC showintl FAR - ARG @sizeofint:word,@integer:dword - USES eax,bx,cx,edx,esi,di - mov di,[@sizeofint] - xor cx,cx - mov eax,[@integer] - mov esi,10 - mov bx,offset showbuffer+27 -@@decint: - xor edx,edx - div esi - add dl,'0' - inc cx - mov [cs:bx],dl - dec bx - cmp cx,di - jae @@nomuch - cmp ax,0 - jne @@decint - mov ax,di - xchg cx,di - sub cx,di -@@rego: - mov [byte ptr cs:bx],'0' - dec bx - dec cx - jnz @@rego - jmp @@finishim -@@nomuch: - mov ax,di -@@finishim: -@@showinteger: - inc bx - mov cl,[cs:bx] - call [cs:showchars],cx,0FFFFh - dec ax - jnz @@showinteger - ret -ENDP showintl - -;==========SHOWINTR=========== -;Affiche un entier %0 aprés le curseur de taille %1 caractère centré a droite -;-> %0 un entier % taille en caractères -;<- -;=============================== -PROC showintr FAR - ARG @sizeofint:word,@integer:dword - USES eax,bx,cx,edx,esi,di - mov di,[@sizeofint] - xor cx,cx - mov eax,[@integer] - mov esi,10 - mov bx,offset showbuffer+27 -@@decint: - xor edx,edx - div esi - add dl,'0' - inc cx - mov [cs:bx],dl - dec bx - cmp cx,di - jae @@nomuch - cmp ax,0 - jne @@decint - mov ax,di - xchg cx,di - sub cx,di -@@rego: - mov [byte ptr cs:bx],' ' - dec bx - dec cx - jnz @@rego - jmp @@finishim -@@nomuch: - mov ax,di -@@finishim: -@@showinteger: - inc bx - mov cl,[cs:bx] - call [cs:showchars],cx,0FFFFh - dec ax - jnz @@showinteger - ret -ENDP showintr - -;==========SHOWSIGNED=========== -;Affiche un entier %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;=============================== -PROC showsigned FAR - ARG @sizeofint:word,@integer:dword=taille - USES ebx,cx,edx - mov ebx,[@integer] - mov cx,[@sizeofint] - xor edx,edx - cmp cx,1 - ja @@signed16 - mov dl,bl - cmp dl,7Fh - jbe @@notsigned - neg dl - jmp @@showminus -@@signed16: - cmp cx,2 - ja @@signed32 - mov dx,bx - cmp dx,7FFFh - jbe @@notsigned - neg dx - jmp @@showminus -@@signed32: - mov edx,ebx - cmp edx,7FFFFFFFh - jbe @@notsigned - neg edx -@@showminus: - call [cs:showchars],'-',0FFFFh -@@notsigned: - call showint,edx - ret -ENDP showsigned - -;==========SHOWHEX=========== -;Affiche un nombre hexadécimal %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;============================ -PROC showhex FAR - ARG @sizeofint:word,@integer:dword=taille - USES ax,bx,cx,edx - mov edx,[@integer] - mov cx,[@sizeofint] - mov ax,cx - shr ax,2 - sub cx,32 - neg cx - shl edx,cl -@@Hexaize: - rol edx,4 - mov bx,dx - and bx,0fh - mov cl,[cs:bx+offset Tab] - call [cs:showchars],cx,0FFFFh - dec al - jnz @@Hexaize - ret - -Tab db '0123456789ABCDEF' -ENDP showhex - -;==========SHOWBIN=========== -;Affiche un nombre binaire %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;============================ -PROC showbin FAR - ARG @sizeofint:word,@integer:dword=taille - USES ax,cx,edx - mov edx,[@integer] - mov cx,[@sizeofint] - sub cx,32 - neg cx - shl edx,cl - mov ax,[@sizeofint] -@@binaize: - rol edx,1 - mov cl,'0' - adc cl,0 - call [cs:showchars],cx,0FFFFh - dec al - jnz @@binaize - ret -ENDP showbin - -;==========SHOWBCD=========== -;Affiche un nombre en BCD %0 de taille %1 aprés le curseur -;-> %0 un entier, %1 la taille -;<- -;============================ -PROC showbcd FAR - ARG @sizeofint:word,@integer:dword - USES ax,cx,edx - mov edx,[@integer] - mov ax,[@sizeofint] - mov cx,ax - shr ax,2 - sub cx,32 - neg cx - shl edx,cl -@@BCDaize: - rol edx,4 - mov cl,dl - and cl,0fh - add cl,'0' - call [cs:showchars],cx,0FFFFh - dec al - jnz @@BCDaize - ret -ENDP showbcd - -;==========SHOWSTRING=========== -;Affiche une chaine de caractère pointée par ds:%1 aprés le curseur -;-> ds:%1 pointeur chaine type pascal -;<- -;=============================== -PROC showstring FAR - ARG @pointer:word - USES bx,si - mov si,[@pointer] - mov bl,[si] -@@strinaize: - inc si - call [cs:showchars],[word ptr si],0FFFFh - dec bl - jnz @@strinaize - ret -ENDP showstring - -;==========showchars=========== -;Affiche un caractère %0 aprés le curseur -;-> %0 caractère -;<- -;=============================== -PROC showchar FAR - ARG @pointer:word - call [cs:showchars],[@pointer],0FFFFh - ret -ENDP showchar - -;==========SHOWSTRING0=========== -;Affiche une chaine de caractère pointée par ds:%1 aprés le curseur -;-> ds:%1 pointeur chaine type zéro terminal -;<- -;================================ -PROC showstring0 FAR - ARG @pointer:word - USES cx,si - mov si,[@pointer] -@@strinaize0: - mov cl,[si] - cmp cl,0 - je @@no0 - call [cs:showchars],cx,0FFFFh - inc si - jmp @@strinaize0 -@@no0: - ret -ENDP showstring0 - diff --git a/noyau/8237.asm b/noyau/8237.asm deleted file mode 100644 index c03dcb1..0000000 --- a/noyau/8237.asm +++ /dev/null @@ -1,266 +0,0 @@ -;**************************************************************** -; * -; Periph‚rique : DMA * -; Plages Entr‚es-Sorties : 0000-000F * -; 00C0-00DF * -; 0080-0090 * -; (0094-009F) * -; Plages M‚moires : AUCUNES * -; * -DmaRead equ 044h ;I/O to memory, no autoinit, increment, single mode -DmaWrite equ 048h ;Memory to I/O, no autoinit, increment, single mode - -;Lecture des bits du registre d'‚tat (08, D0 ) -STATUS_REQ3 = 80h ;Bit actif: le canal DMA concern‚ -STATUS_REQ2 = 40h ;re‡oit une requˆte DMA -STATUS_REQ1 = 20h ;Request -STATUS_REQ0 = 10h -STATUS_TC3 = 08h ;Bit actif: Un transfert DMA a ‚t‚ -STATUS_TC2 = 04h ;ex‚cut‚ depuis la derniŠre lecture -STATUS_TC1 = 02h ;du registre d'‚tat. -STATUS_TC0 = 01h ;Terminal Count - -;Ecriture des bits du registre de commande (08, D0) -COMMAND_DACKLEVEL = 80h ;Bit 7 actif: ligne DMA Acknowledge HIGH active -COMMAND_DREQLEVEL = 40h ;Bit 6 actif: ligne REQ Acknowledge LOW active -COMMAND_EXTWRITE = 20h ;Bit 5 actif: EXTENDED Write,sinon LATE Write -COMMAND_FIXEDPRI = 10h ;Bit 4 actif: priorit‚ constante -COMMAND_COMPRESS = 08h ;Bit 3 actif: compression -COMMAND_INACTIVE = 04h ;Bit 2 actif: contr“leur d‚sactiv‚ -COMMAND_ADH0 = 02h ;Bit 1 actif: Adress Hold pour canal 0/4 d‚sactiv‚ -COMMAND_MEM2MEM = 01h ;Bit 0 actif: m‚moire/m‚moire, sinon m‚moire/p‚riph‚rie - -;Ecriture des bits du registre de requˆte ( 09, D2 ) -REQUEST_RESERVED = 0F8h ;R‚glage des bits r‚serv‚s =0 -REQUEST_SET = 04h ;D‚finir requˆte DMA -REQUEST_CLR = 00h ;Supprimer requˆte DMA -REQUEST_MSK = 03h ;Indiquer le canal dans les deux bits du bas - -;Ecriture des bits du registre de masquage de canal ( 0A, D4 ) -CHANNEL_RESERVED = 0F8h ;R‚glage des bits r‚serv‚s =0 -CHANNEL_SET = 04h ;Masquer/verrouiller canal DMA -CHANNEL_CLR = 00h ;Lib‚rer canal DMA -CHANNEL_MSK = 03h ;Indiquer le canal dans les deux bits du bas - -;Ecriture des bits du registre de mode (0B,D6) -MODE_DEMAND = 00h ;Transf‚rer … la demande -MODE_SINGLE = 40h ;Transf‚rer valeurs uniques -MODE_BLOCK = 80h ;Transf‚rer en bloc -MODE_CASCADE = 0C0h ;Transf‚rer en cascade -MODE_DECREMENT = 20h ;D‚cr‚menter -MODE_AUTOINIT = 10h ;Autoinitialisation vers la fin -MODE_VERIFY = 00h ;V‚rifier -MODE_WRITE = 04h ;Ecrire dans la m‚moire -MODE_READ = 08h ;Lire depuis la m‚moire -MODE_INVALID = 0Ch ;Incorrect -MODE_CHANNELMSK = 03h ;Indiquer le canal dans les deux bits du bas - -;Ports du DMA esclave - -DmaStatusS dw 08h ;R SLAVE Registre d'‚tat -DmaCommandS dw 08h ;W SLAVE Registre de commande -DmaRequestS dw 09h ;W SLAVE Ex‚cuter requˆte DMA -DmachMaskS dw 0ah ;W SLAVE Masquer canaux -DmaModeS dw 0bh ;W SLAVE Mode de transfert -DmaFlipFlopS dw 0ch ;W SLAVE Flipflop adr/compteur -DmaTempS dw 0dh ;R SLAVE Reset du contr“leur -DmaClearS dw 0dh ;R SLAVE Registre temporaire -DmaMaskClrS dw 0eh ;R SLAVE Lib‚rer canaux -DmaMaskS dw 0fh ;R SLAVE Masquer canaux - -;Ports du DMA esclave - -DmaStatusM dw 0D0h ;R MASTER Registre d'‚tat -DmaCommandM dw 0D0h ;W MASTER Registre de commande -DmaRequestM dw 0D2h ;W MASTER Ex‚cuter requˆte DMA -DmaMaskM dw 0D4h ;W MASTER Masquer canaux -DmaModeM dw 0D6h ;W MASTER Mode de transfert -DmaFlipFlopM dw 0D8h ;W MASTER Flipflop adr/compteur -DmaTempM dw 0DAh ;R MASTER Reset du contr“leur -DmaClearM dw 0DAh ;R MASTER Registre temporaire -DmaMaskClrM dw 0DCh ;R MASTER Lib‚rer canaux -DmaMaskM2 dw 0DEh ;R MASTER Masquer canaux - -DmaAdress db 00h ;DMA address register 0 - db 002h ;DMA address register 1 - db 004h ;DMA address register 2 - db 006h ;DMA address register 3 - db 0c0h ;DMA address register 4 - db 0c4h ;DMA address register 5 - db 0c8h ;DMA address register 6 - db 0cch ;DMA address register 7 - -DmaCount db 001h ;DMA count registers 0 - db 003h ;DMA count registers 1 - db 005h ;DMA count registers 2 - db 007h ;DMA count registers 3 - db 0c2h ;DMA count registers 4 - db 0c6h ;DMA count registers 5 - db 0cah ;DMA count registers 6 - db 0ceh ;DMA count registers 7 - -DmaPage db 087h ;DMA page registers 0 - db 083h ;DMA page registers 1 - db 081h ;DMA page registers 2 - db 082h ;DMA page registers 3 - db 08fh ;DMA page registers 4 - db 08bh ;DMA page registers 5 - db 089h ;DMA page registers 6 - db 08ah ;DMA page registers 7 - -;verouille le canal AL -DisableDma: - push ax dx - cmp al, 4 - jae MasterDisableDma - mov dx, DmaMaskS - or al, 00000100b - out dx, al - jmp EndDisableDma -MasterDisableDma: - mov dx, DmaMaskS - and al, 00000011b - or al, 00000100b - out dx, al -EndDisableDma: - pop dx ax - ret - -;déverouille le canal AL -EnableDma: - push ax dx - cmp al, 4 - jae MasterDisableDma - mov dx, DmaMaskS - out dx, al - jmp EndEnableDma -MasterEnableDma: - mov dx, DmaMaskS - and al, 00000011b - out dx, al -EndEnableDma: - pop dx ax - ret - -;Efface le FlipFlop canal AL -ClrDmaFlipFlop: - push ax dx - cmp al, 4 - jae MasterClrFlipFlopDma - mov dx,DmaFlipFlopS - xor ax, ax - out dx, al - jmp EndClrFlipFlopDma -MasterClrFlipFlopDma: - mov dx,DmaFlipFlopM - xor ax, ax - out dx, al -EndClrFlipFlopDma: - pop dx ax - ret - -;Met le mode du canal al à ah -SetDmaMode: - push ax dx - cmp al, 4 - jae MasterSetDmaMode - mov dx,DmaModeS - or al, ah - out dx, al - jmp EndSetDmaMode -MasterSetDmaMode: - mov dx,DmaModeM - and al, 00000011b - or al, ah - out dx, al -EndSetDmaMode: - pop dx ax - ret - - -;Met le page du canal al a ah -SetDmaPage: - push ax bx dx si - cmp al, 4 - jae MasterSetDmaPage - mov si, offset DmaPage - xor dh, dh - xor bh, bh - mov bl, al - mov dl, cs:[si+bx] - xchg al, ah - out dx, al - jmp EndSetDmaPage -MasterSetDmaPage: -EndSetDmaPage: - pop si dx bx ax - ret - -;Met l'adresse du canal al a DS:BX -SetDmaAdress: - push ax bx cx dx si - push ax - mov ax, ds - and ax, 0000111111111111b - shl ax,4 - add bx, ax - mov ax, ds - and ax, 1111000000000000b - shr ax, 4 - mov cx,ax - pop ax - push ax - add ax,cx - call SetDmaPage - pop ax - call ClrDmaFlipFlop - mov si, offset DmaAdress - xor dh, dh - push bx - xor bh, bh - mov bl, al - mov dl, byte ptr cs:[si+bx] - pop bx - cmp al, 4 - jae MasterSetDmaAddress - mov al, bh - out dx, al - mov al, bl - out dx, al - jmp EndSetDmaAddress -MasterSetDmaAddress: - mov al, bh - out dx, al - call ClrDmaFlipFlop - mov al, bl - out dx, al -EndSetDmaAddress: - pop si dx cx bx ax - ret - -;Spécifie au controleur DMA le nombre d'octets à transférer dans CX -SetDmaCount: - push ax bx dx si - call ClrDmaFlipFlop - mov si, offset DmaCount - xor dh, dh - xor bh, bh - mov bl, al - mov dl, byte ptr cs:[si+bx] - cmp al, 4 - jae MasterSetDmaCount - mov al, ch - out dx, al - mov al, cl - out dx, al - jmp EndSetDmaCount -MasterSetDmaCount: - mov al, ch - out dx, al - call ClrDmaFlipFlop - mov al, cl - out dx, al -EndSetDmaCount: - pop si dx bx ax - ret - diff --git a/noyau/8259a.asm b/noyau/8259a.asm deleted file mode 100644 index 2349253..0000000 --- a/noyau/8259a.asm +++ /dev/null @@ -1,415 +0,0 @@ -;Adresses de port du contr“leur IRQ - MASTERPIC = 020h ;Adresse de base du PIC maŒtre - SLAVEPIC = 0A0h ;Adresse de base du PIC esclave - IRQMASK = 001h ;Offset sur port de masquage - -;Commandes IRQ OCW2 - DISABLEROTATION = 000h ;Desactiver la rotation de priorités en mode EOI automatique - EOI = 020h ;End of Interrupt non sp‚cifi‚ - COMMANDEOI = 060h ;Commande EOI particulière - ENABLEROTATION = 080h ;Activer la rotation de priorités en mode EOI automatique - ROTATIONNOSPEC = 0A0h ;Rotation des priorités en mode EOI automatique - SETPRIORITY = 0C0h ;Definir la priorité - ROTATIONSPEC = 0E0h ;Rotation des priorités en mode EOI spécifié - -;Position des vecteurs d'interruptions - MASTERFIRSTVECTOR = 008h ;Vecteurs logiciels des interruptions - SLAVEFIRSTVECTOR = 070h ;‚lectroniques - -;OCW3 codes registres - IRR = 002h ;Interrupt Request Register - ISR = 003h ;In Service Register -;OCW3 et modes - OCW3 = 008h ;OCW3 - POLLING = 004h ;Polling bit - - -ISR = 0Bh ; Pas d'op‚ration, pas de Poll, lire ISR OCW3 -IRR = 0Ah ; Pas d'op‚ration, pas de Poll, lire IRR - -;Autorise une interruption ‚lectronique -;Entr‚e : %1 - Num‚ro de l'interruption (0-15) … autoriser 0-7 = MASTERPIC , 8-15 = SLAVEPIC -PROC enableirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC+IRQMASK - cmp al,7 - jbe @@master - mov dx,SLAVEPIC+IRQMASK -@@master: - mov cl,al - and cl,7 - mov al,1 - shl al,cl - not al - mov ah,al - in al,dx - and al,ah - out dx,al - ret -endp enableirq - -;Desactive une interruption ‚lectronique -;Entr‚e : %0 - Num‚ro de l'interruption (0-15) … desactiver 0-7 = MASTERPIC , 8-15 = SLAVEPIC -PROC disableirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC+IRQMASK - cmp al,7 - jbe @@master - mov dx,SLAVEPIC+IRQMASK -@@master: - mov cl,al - and cl,7 - mov al,1 - shl al,cl - not al - mov ah,al - in al,dx - or al,ah - out dx,al - ret -endp disableirq - - -;Signale "End Of Interrupt" de l'interruption %0 -PROC seteoi FAR - ARG @irq:word - USES ax,dx - mov ax,[@irq] - cmp al,7 - jbe @@master - mov al,EOI - out SLAVEPIC,al -@@master: - mov al,EOI - out MASTERPIC,al - ret -endp seteoi - - -;Lit les masques d'un contr“leur IRQ dans ax, 0 master ou slave 1 ds %1 -PROC readimr FAR - ARG @controleur:word - USES bx,dx - mov bx,[@controleur] - mov dx,MASTERPIC+ IRQMASK - cmp bl,0 - jne @@master - mov dx,SLAVEPIC+ IRQMASK -@@master: - xor ah,ah - in al,dx - pop dx - ret -endp readimr - -;Lit le registre d'‚tat d'un contr“leur IRQ dans ax, 0 master ou slave 1 ds %1 -PROC readisr FAR - ARG @controleur:word - USES bx,dx - mov bx,[@controleur] - mov dx,MASTERPIC - cmp bh,0 - jne @@master - mov dx,SLAVEPIC -@@master: - mov al,ISR - out dx,al - xor ah,ah - in al,dx - ret -endp readisr - - -;Lit le registre d'‚tat d'un contr“leur IRQ dans al, 0 master ou slave 1 ds bh -PROC readirr FAR - ARG @controleur:word - USES bx,dx - mov bx,[@controleur] - mov dx,MASTERPIC - cmp bh,0 - jne @@master - mov dx,SLAVEPIC -@@master: - mov al,IRR - out dx,al - xor ah,ah - in al,dx - ret -endp readirr - -;carry si enable et pas carry si pas enable -PROC isenableirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC+IRQMASK - cmp al,7 - jbe @@master - mov dx,SLAVEPIC+IRQMASK -@@master: - mov cl,al - and cx,7 - in al,dx - neg al - bt ax,cx - ret -endp isenableirq - - -;carry si enable et pas carry si pas enable -PROC isinserviceirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC - cmp al,7 - jbe @@master - mov dx,SLAVEPIC -@@master: - mov cl,al - mov al,ISR - out dx,al - and cx,7 - in al,dx - neg al - bt ax,cx - ret -endp isinserviceirq - - -;carry si enable et pas carry si pas enable -PROC isrequestirq FAR - ARG @irq:word - USES ax,cx,dx - mov ax,[@irq] - mov dx,MASTERPIC - cmp al,7 - jbe @@master - mov dx,SLAVEPIC -@@master: - mov cl,al - mov al,IRR - out dx,al - and cx,7 - in al,dx - neg al - bt ax,cx - ret -endp isrequestirq - - -PROC installirqhandler FAR - USES eax,bx,cx,edx,si,di,ds,es - push fs - call mbcreate,offset interruptionbloc,256*size ints - mov es,ax - mov ax,0x0000 - mov ds,ax - xor si,si -@@searchdummypointer: - mov fs,[(vector si).data.seg] - mov bx,[(vector si).data.off] - cmp [byte ptr fs:bx],0xCF ;iret - je @@founded - add si,size vector - cmp si,256*4 - jb @@searchdummypointer - xor edx,edx - jmp @@suite -@@founded: - mov edx,[(vector si).content] -@@suite: - xor cx,cx - xor si,si - xor di,di - cli -@@copy: - mov [es:(ints di).number],cl - mov [es:(ints di).locked],0 - mov [es:(ints di).vector1.content],0 - mov [es:(ints di).vector3.content],0 - mov [es:(ints di).vector4.content],0 - mov [es:(ints di).vector5.content],0 - mov [es:(ints di).vector6.content],0 - mov [es:(ints di).vector7.content],0 - mov [es:(ints di).vector8.content],0 - mov [es:(ints di).launchedlow],0 - mov [es:(ints di).launchedhigh],0 - mov [es:(ints di).calledlow],0 - mov [es:(ints di).calledhigh],0 - mov eax,[(vector si).content] - cmp eax,edx - je @@notarealvector - mov [es:(ints di).vector1.content],eax - mov [es:(ints di).activated],1 - jmp @@copynext -@@notarealvector: - mov [es:(ints di).vector1.content],0 - mov [es:(ints di).activated],0 -@@copynext: - mov bx,cx - shl bx,3 - sub bx,cx - add bx,offset coupling - mov [(vector si).data.seg],cs - mov [(vector si).data.off],bx - add si,size vector - add di,size ints - inc cl - cmp cl,0 - jne @@copy -@@end: - pop fs - sti - ret -endp installirqhandler - - -interruptionbloc db '/interrupts',0 - - -PROC savecontext FAR -ARG @pointer:word -USES eax,si,ds -pushfd -push eax -push ebx -push ecx -push edx -push esi -push edi -push ds -push es -push fs -push gs -push ss -mov si,[@pointer] -mov ds,[ss:bp+4] -mov eax,ebp -mov ax,[word ptr ss:bp] -push eax -push [word ptr ss:bp+4] -xor eax,eax -mov ax,[word ptr ss:bp+2] -push eax -mov ax,bp -add ax,4 -push eax -pop [(regs si).sesp] -pop [(regs si).seip] -pop [(regs si).scs] -pop [(regs si).sebp] -pop [(regs si).sss] -pop [(regs si).sgs] -pop [(regs si).sfs] -pop [(regs si).ses] -pop [(regs si).sds] -pop [(regs si).sedi] -pop [(regs si).sesi] -pop [(regs si).sedx] -pop [(regs si).secx] -pop [(regs si).sebx] -pop [(regs si).seax] -pop [(regs si).seflags] -ret -endp savecontext - -PROC restorecontextg FAR -ARG @pointer:word -mov si,[@pointer] -pushd [cs:(regs si).sesi] -pushd [cs:(regs si).seflags] -mov eax,[cs:(regs si).seax] -mov ebx,[cs:(regs si).sebx] -mov ecx,[cs:(regs si).secx] -mov edx,[cs:(regs si).sedx] -mov edi,[cs:(regs si).sedi] -mov ebp,[cs:(regs si).sebp] -mov es,[cs:(regs si).ses] -mov fs,[cs:(regs si).sfs] -mov gs,[cs:(regs si).sgs] -mov ds,[cs:(regs si).sds] -popfd -pop esi -pop [cs:dummy] -db 0xCA,0x02,0x00 ;retf 2 -endp restorecontextg - - - -coupling: -counter = 0 -REPEAT 256 -push counter+256 -push offset irqhandlers -ret -counter = counter + 1 -ENDM - -interrupt dw 0 -dummy dw 0 -calling_reg regs <> -function_reg regs <> - -irqhandlers: -cli -pop [cs:interrupt] -call savecontext,offset calling_reg -call irqhandler,[cs:interrupt] -call restorecontextg,offset calling_reg -sti -iret - -PROC irqhandler NEAR -ARG @int:word -push cs -pop ds -call mbfindsb,offset interruptionbloc,cs -jc @@end -mov es,ax -mov ax,[@int] -sub ax,256 -mov cx,size ints -mul cx -mov si,ax -add [es:(ints si).calledlow],1 -adc [es:(ints si).calledhigh],0 -cmp [es:(ints si).activated],1 -jne @@end -add [es:(ints si).launchedlow],1 -adc [es:(ints si).launchedhigh],0 -lea si,[es:(ints si).vector1] -mov cl,8 -@@launchall: -cmp [es:(vector si).content],0 -je @@end -push [word ptr cs:calling_reg.seflags] -push cs -push offset @@back -push [es:(vector si).data.seg] -push [es:(vector si).data.off] -call savecontext,offset function_reg -call restorecontextg,offset calling_reg -db 0xCB -@@back: -cli -call savecontext,offset calling_reg -call restorecontextg,offset function_reg -@@next: -add si,size vector -dec cl -jnz @@launchall -@@end: -ret -endp irqhandler - - - - - - - diff --git a/noyau/MAKEFILE b/noyau/MAKEFILE deleted file mode 100644 index d14bef5..0000000 --- a/noyau/MAKEFILE +++ /dev/null @@ -1,38 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: systeme.sys boot.bin - -systeme.sys: video.obj disque.obj systeme.obj - $(lnk) systeme.obj systeme.sys - -systeme.obj: ..\lib\detect.lib ..\lib\video.lib video.sys disque.sys - $(asm) systeme.asm - -disque.sys: - $(lnk) disque.obj disque.sys - -video.sys: - $(lnk) video.obj video.sys - -boot.bin: boot.obj - $(lnk) boot.obj boot.bin /bs - -video.obj: - $(asm) video.asm - -disque.obj: - $(asm) disque.asm - -boot.obj: - $(asm) boot.asm - -clean: - del *.obj - del *.exe - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err \ No newline at end of file diff --git a/noyau/boot.asm b/noyau/boot.asm deleted file mode 100644 index 05812e0..0000000 --- a/noyau/boot.asm +++ /dev/null @@ -1,216 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\fat.h" -include "..\include\divers.h" - -org 7C00h - -jmp boot - -bootsec bootinfo <"COS2000A",512,1,1,2,224,2880,0F0h,9,18,2,0,0,0,0,0,29h,01020304h,"COS2000 ","FAT12 "> - -errorloading db " [Erreur]",0dh,0ah,0 -okloading db "Recherche noyau ",0Dh,0ah," -" -sys db "SYSTEME SYS",0 -syst db " [ Ok ]",0dh,0ah,"Chargement ",0 -dot db ".",0 - - - -errorboot: - mov si,offset errorloading - call showstr - mov ah,0 - int 16h - int 19h - -boot: - mov [bootsec.bootdrive],dl - cli - mov ax,09000h - mov ss,ax - mov sp,0FFFFh - sti -boot2: - push cs - push cs - pop es - pop ds - xor ax,ax - mov dl,[bootsec.bootdrive] - int 13h - jc errorboot - mov si,offset okloading - call showstr - mov cx,[bootsec.reservedsectors] - add cx,[bootsec.hiddensectorsh] - adc cx,[bootsec.hiddensectorsl] - push cx - mov bx,[bootsec.sectorsperfat] - mov di,offset bufferfat -readfat: - call readsector - jc errorboot - inc cx - add di,[bootsec.sectorsize] - dec bx - jnz readfat - pop cx - xor ax,ax - mov al,[bootsec.fatsperdrive] - mov bx,[bootsec.sectorsperfat] - mul bx - add cx,ax - mov ax,32 - mul [bootsec.directorysize] - div [bootsec.sectorsize] - add ax,cx - sub ax,2 - mov [word ptr bootsec.reservedfornt],ax - xor dx,dx -checkroot: - mov di,offset buffer - call readsector - jc errorboot - xor bx,bx -findnext: - cmp [byte ptr di],0 - je errorboot - cmp [byte ptr di],0E5h - je no - cmp [byte ptr di],041h - je no - mov si,offset dot - call showstr - push di cx - mov si,offset sys - mov cx,11 - rep cmpsb - pop cx di - je oksystem -no: - add di,32 - add bx,32 - inc dx - cmp dx,[bootsec.directorysize] - ja errorboot - cmp bx,[bootsec.sectorsize] - jb findnext - inc cx - jmp checkroot -oksystem: - mov si,offset syst - call showstr - mov cx,[di+26] - mov ax,8000h - mov es,ax - push es - mov di,0000h - push 0010h - mov si,offset dot - xor ax,ax -fatagain: - cmp cx,0FF0h - jae finishload - push cx - add cx,[word ptr bootsec.reservedfornt] - call readsector - pop cx - jc errorboot - inc ax - call showstr - add di,[bootsec.sectorsize] - call getfat - jnc fatagain -finishload: - retf - -;=============READSECTOR (Fonction 01H)=============== -;Lit le secteur CX et le met en es:di -;-> AH=1 -;<- Flag Carry si erreur -;===================================================== -readsector: - push ax bx cx dx si - mov ax,cx - xor dx,dx - div [bootsec.sectorspertrack] - inc dl - mov bl,dl - xor dx,dx - div [bootsec.headsperdrive] - xchg dl,dh - mov cx,ax - xchg cl,ch - shl cl,6 - or cl, bl - mov bx,di - mov si, 4 - mov al, 1 -tryagain: - mov ah, 2 - mov dl,[bootsec.bootdrive] - int 13h - jnc done - dec si - jnz tryagain -done: - pop si dx cx bx ax - ret - - -getfat: - push ax bx dx di - mov di,offset bufferfat - mov ax,cx - mov bx,ax - and bx,0000000000000001b - shr ax,1 - mov cx,3 - mul cx - add di,ax - cmp bx,0h - jnz evenfat -oddfat: - mov dx,[di] - and dx,0FFFh - mov cx,dx - jmp endfat -evenfat: - mov dx,[di+1] - and dx,0FFF0h - shr dx,4 - mov cx,dx -endfat: - pop di dx bx ax - ret - - -showstr: - push ax bx si -again: - lodsb - or al,al - jz fin - mov ah,0Eh - mov bx,07h - int 10h - jmp again -fin: - pop si bx ax - ret - - -db 055h,0AAh - -endof: - -buffer equ offset endof+2048 -bufferfat equ offset endof+4096 - diff --git a/noyau/clavier.asm b/noyau/clavier.asm deleted file mode 100644 index 9fd3cdd..0000000 --- a/noyau/clavier.asm +++ /dev/null @@ -1,261 +0,0 @@ -.model tiny -.486 -smart -.code - -org 0h - -include ..\include\mem.h - -start: - -jmp tsr -offsets dd 0 -db 'KEYBOARD' -tsr: - pushf - db 2eh,0ffh,1eh - dw offsets - cli - cmp cs:isstate,1 - je endofforce - mov cs:isstate,1 - mov cs:eaxr,eax - in al,60h - cmp al,68 - je F10 - cmp al,87 - je F11 - cmp al,88 - je F12 -endof: - mov cs:isstate,0 - mov eax,cs:eaxr -endofforce: - sti - iret - isstate db 0 - infos db 40 dup (0) - feax dd 0 - -F10: - push cs - pop ds - mov si,offset com - mov ah,5 - int 49h - pop ax - pop ax - pop ax - push gs - push gs - push gs - pop ds - pop es - pop fs - push gs - push size exe - sti - mov cs:[isstate],0 - retf - -com db 'COMMANDE.CE',0 - -F11: - push ax di es - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov al,cs:[di+7] - inc al - cmp al,9 - jbe notabove - mov al,0 -notabove: - mov ah,0 - int 47h - pop es di ax - jmp endof - - -f12: -pushad -pushf -push ds -mov cs:[eaxr],eax -mov cs:[ebxr],ebx -mov cs:[ecxr],ecx -mov cs:[edxr],edx -mov cs:[esir],esi -mov cs:[edir],edi -mov cs:[espr],esp -mov cs:[ebpr],ebp -mov cs:[csr],cs -mov cs:[dsr],ds -mov cs:[esr],es -mov cs:[fsr],fs -mov cs:[gsr],gs -mov cs:[ssr],ss -push cs -pop ds -mov si,offset sep -call Showstr -mov si,offset reg -mov di,offset regdata -mov bx,7 -showregs: -cmp byte ptr cs:[si+6],":" -jne endshowregs -call Showstr -cmp byte ptr cs:[si+4]," " -je segsss -mov edx,cs:[di] -mov cx,32 -call Showhex -add di,4 -jmp showmax -segsss: -mov dx,cs:[di] -mov cx,16 -call Showhex -add di,2 -showmax: -add si,9 -mov bp,dx -push si -mov si,offset beginds -call showstr -mov si,bp -mov cx,8 -mov al,0 -letshow: -mov dl,ds:[si] -inc si -call showhex -inc al -cmp al,10 -jb letshow -mov si,offset ende -call showstr -mov si,offset begines -call showstr -mov si,bp -mov cx,8 -mov al,0 -letshow2: -mov dl,es:[si] -inc si -call showhex -inc al -cmp al,10 -jb letshow2 -mov si,offset ende -call showstr -pop si -jmp showregs -endshowregs: -mov si,offset sep -call Showstr -xor ax,ax -int 16h -pop ds -popf -popad -jmp endof -begines db ' es[',0 -beginds db ' ds[',0 -ende db '] ',0 - - -;==============================Affiche le nombre nb hexa en EDX de taille CX et couleur BL============== -ShowHex: - push ax bx cx edx si di - mov di,cx - sub cx,32 - neg cx - shl edx,cl - shr di,2 - mov ah,09h - and bx,1111b -Hexaize: - rol edx,4 - mov si,dx - and si,1111b - mov al,[si+offset tab] - push cx - mov cx,1 - cmp al,32 - jb control2 - mov ah,09h - int 10h -control2: - mov ah,0Eh - int 10h - pop cx - dec di - jnz Hexaize - pop di si edx cx bx ax - ret -Tab db '0123456789ABCDEF' - -;==============================Affiche une chaine DS:SI de couleur BL============== -showstr: - push ax bx cx si - mov cx,1 -again: - lodsb - or al,al - jz fin - and bx,0111b - cmp al,32 - jb control - mov ah,09h - int 10h -control: - mov ah,0Eh - int 10h - jmp again - fin: - pop si cx bx ax - ret - - -;================================================ -;Routine de débogage -;================================================ -regdata: -eaxr dd 0 -ebxr dd 0 -ecxr dd 0 -edxr dd 0 -esir dd 0 -edir dd 0 -espr dd 0 -ebpr dd 0 -csr dw 0 -dsr dw 0 -esr dw 0 -fsr dw 0 -gsr dw 0 -ssr dw 0 - -reg db 0Dh,0Ah,"eax : ",0 - db 0Dh,0Ah,"ebx : ",0 - db 0Dh,0Ah,"ecx : ",0 - db 0Dh,0Ah,"edx : ",0 - db 0Dh,0Ah,"esi : ",0 - db 0Dh,0Ah,"edi : ",0 - db 0Dh,0Ah,"esp : ",0 - db 0Dh,0Ah,"ebp : ",0 - db 0Dh,0Ah,"cs : ",0 - db 0Dh,0Ah,"ds : ",0 - db 0Dh,0Ah,"es : ",0 - db 0Dh,0Ah,"fs : ",0 - db 0Dh,0Ah,"gs : ",0 - db 0Dh,0Ah,"ss : ",0 - -sep db 0Ah,0Dh,'********************',0Ah,0Dh,0 - -end start diff --git a/noyau/disque.asm b/noyau/disque.asm deleted file mode 100644 index 0c91749..0000000 --- a/noyau/disque.asm +++ /dev/null @@ -1,1099 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\fat.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,offset imports,,> - - -exporting -declare readsector -declare writesector -declare verifysector -declare initdrive -declare loadfile -declare compressrle -declare decompressrle -declare findfirstfile -declare findnextfile -declare getfreespace -declare searchfile -declare getname -declare getserial -declare changedir -declare readcluster -declare writecluster -declare getdir -declare projfile -declare execfile -ende - -importing -use SYSTEME,biosprinth -use SYSTEME,mbfindsb -use SYSTEME,mbfree -use SYSTEME,mbcreate -use SYSTEME,mbresident -use SYSTEME,mbfind -use SYSTEME,mbchown -use SYSTEME,mbloadfuncs -use SYSTEME,mbloadsection -endi - - -;DPT disquette -mydpt dpt <> - -;Secteur de boot -myboot bootinfo <> - -;Parametres -support db 0 -nbbuffer db 0 - -;Données Calculée -clustersize dw 0 -tracksperhead dw 0 -drivesize dd 0 -adressboot dw 0 -adressfat dw 0 -adressparent dw 0 -adressdirectory dw 0 -adressdata dw 0 -addingvalue dw 0 -currentdir dw 0 ;En cluster -currentdirstr db 128 dup (0) - - -PROC getfat near - uses ax,bx,dx,si,ds,es - push cs - pop ds - - push cs - pop es - call [cs:mbfindsb],offset datafat,cs - mov es,ax - mov ax,cx - mov bx,ax - and bx,0000000000000001b - shr ax,1 - mov cx,3 - mul cx - ;mov si,offset fatter - xor si,si - add si,ax - cmp bx,0h - jnz evenfat -oddfat: - mov ax,[es:si] - and ax,0FFFh - mov cx,ax - jmp endfat -evenfat: - mov ax,[es:si+1] - and ax,0FFF0h - shr ax,4 - mov cx,ax -endfat: - cmp ax,0FF0h - jbe nocarry - stc - ret -nocarry: - clc - ret -endp getfat - -;============loadfile=============== -;Charge le fichier ds:%0 en ds:%1 ->ax taille -;-> AH=4 -;<- Flag Carry si erreur -;===================================================== -PROC loadfile FAR - ARG @name:word,@pointer:word - LOCAL @@temp:word:48 - USES cx,si,di,ds,es - push ss - pop es - lea di,[@@temp] - push ds di - mov si,[@name] - mov cx,48/4 - cld - rep movsd - push ss - pop ds - pop di es - call searchfile,di - jne errorload - jc errorload - mov cx,[(find di).result.filegroup] - mov eax,[(find di).result.filesize] - push es - pop ds - call loadway,cx,eax,[@pointer] - jc errorload - clc - ret -errorload: - stc - xor eax,eax - ret -endp loadfile - -;============execfile (Fonction 18)=============== -;Execute le fichier ds:si -;-> AH=18 -;<- Flag Carry si erreur -;===================================================== -PROC execfile FAR - ARG @file:word - pushad - push ds es fs gs - mov di,[@file] - call uppercase,di - call projfile,di - jc @@reallyerrornoblock - call [cs:mbfind],di - jc @@reallyerror - call [cs:mbchown],ax,[word ptr ss:bp+4] - jc @@reallyerror - push ax - pop ds - cmp [ds:0x0],'EC' - jne @@reallyerror - push ax - push cs - push offset @@arrive - push ds - push [word ptr (exe).starting] - push ds - push ds - push ds - pop es - pop fs - pop gs - push 7202h - xor eax,eax - xor ebx,ebx - xor ecx,ecx - xor edx,edx - xor esi,esi - xor edi,edi - xor ebp,ebp - popf - sti - db 0CBh -@@arrive: - ;cli - ;pop ax - ;call [cs:mbfree],ax - call [cs:mbfree] - pop gs fs es ds - popad - clc - ret -@@reallyerror: - call [cs:mbfree],ax -@@reallyerrornoblock: - pop gs fs es ds - popad - stc - ret -endp execfile - -;============projfile (Fonction 17)=============== -;Charge le fichier ds:%0 sur un bloc mémoire -> eax taille -;-> eax taille fichier -;<- Flag Carry si erreur -;===================================================== -PROC projfile FAR -ARG @pointer:word -LOCAL @@temp:word:64 -USES cx,si,di,ds,es - push ss - pop es - lea di,[@@temp] - push di - mov si,[@pointer] - mov cx,64/4 - cld - rep movsd - push ss - pop ds - pop di - call uppercase,di - call [cs:mbfind],di - jnc @@notace - call searchfile,di - jne @@errorload - jc @@errorload - mov eax,[es:(find di).result.filesize] - call [cs:mbcreate],di,ax - jc @@errorload - call [cs:mbchown],ax,[word ptr ss:bp+4] - jc @@errorload - mov ds,ax - mov cx,[es:(find di).result.filegroup] - mov eax,[es:(find di).result.filesize] - call loadway,cx,eax,0 - jc @@errorload - cmp [ds:0x0],'EC' - jne @@notace - call [cs:mbloadfuncs],ds - jc @@errorload - call [cs:mbloadsection],ds - jc @@errorload - @@notace: - clc - ret -@@errorload: - xor eax,eax - stc - ret -endp projfile - - -;=============SearchFile=============== -;Renvois dans ds:%0 et non equal si pas existant -;-> -;<- Flag Carry si erreur -;====================================== -PROC searchfile FAR -ARG @pointer:word - USES bx,cx,si,di,ds,es - mov si,[@pointer] - lea bx,[es:(find si).result] - call uppercase,si - call findfirstfile,si - jc @@errorsearch - jmp @@founded -@@nextsearch: - call findnextfile,si - jc @@errorsearch -@@founded: - cmp [byte ptr bx],0 - je @@notgood - cmp [byte ptr bx+entries.fileattr],0Fh - je @@nextsearch - call cmpnames,si,bx - jc @@nextsearch -@@okfound: - clc - ret -@@notgood: - cmp si,0FF5h - ret -@@errorsearch: - stc - ret -endp searchfile - -;Transforme la chaine ds:%0 en maj -PROC uppercase FAR - ARG @strs:word - USES si,ax - mov si,[@strs] -@@uppercaser: - mov al,[si] - cmp al,0 - je @@enduppercase - cmp al,'a' - jb @@nonmaj - cmp al,'z' - ja @@nonmaj - sub al,'a'-'A' - mov [si],al -@@nonmaj: - inc si - jmp @@uppercaser -@@enduppercase: - clc - ret -endp uppercase - -;Compare le nom ds:%0 '.' avec ds:%1 -PROC cmpnames FAR - ARG @off1:word,@off2:word - USES ax,cx,si,di,es - mov si,[@off1] - mov di,[@off2] - cmp [byte ptr si],"." - jne @@notaredir - cmp [word ptr si],".." - jne @@onlyonedir - cmp [word ptr di],".." - je @@itok - jmp @@notequal -@@onlyonedir: - cmp [word ptr di]," ." - je @@itok -@@notaredir: - push ds - pop es - mov cx,8 - repe cmpsb - jne @@nequal - inc si - jmp @@equal -@@nequal: - cmp [byte ptr es:di-1],' ' - jne @@notequal -@@equal: - cmp [byte ptr si-1],'.' - jne @@trynoext - mov al,' ' - rep scasb - mov cx,3 - rep cmpsb - jne @@nequal2 - inc si - jmp @@equal2 -@@nequal2: - cmp [byte ptr es:di-1],' ' - jne @@notequal -@@equal2: - cmp [byte ptr si-1],0 - jne @@notequal -@@itok: - clc - ret -@@notequal: - stc - ret -@@trynoext: - cmp [byte ptr si-1],0 - jne @@notequal - jmp @@itok -endp cmpnames - -;charge le fichier de de groupe %0 et de taille %1 -PROC loadway NEAR - ARG @sector:word,@size:dword,@offset:word - USES eax,bx,cx,dx,si,di,ds,es - push ds - pop es - mov eax,[@size] - cmp eax,0 - je @@zeroload - rol eax,16 - mov dx,ax - ror eax,16 - div [cs:clustersize] - mov bx,ax - mov cx,[@sector] - mov di,[@offset] - cmp bx,1 - jb @@adjustlast -@@loadfat: - call readcluster,cx,di - jc @@noway - add di,[cs:clustersize] - call getfat - dec bx - jnz @@loadfat -@@adjustlast: - cmp dx,0 - je @@zeroload - push cs - pop ds - mov si,offset bufferread - call readcluster,cx,si - jc @@noway - mov cx,dx - cld - rep movsb -@@zeroload: - clc - ret -@@noway: - stc - ret -endp loadway - -;=============INITDRIVE=============== -;Initialise le lecteur pour une utilisation ultérieure -;-> -;<- Flag Carry si erreur -;===================================== -PROC initdrive FAR - USES eax,bx,cx,edx,si,di,ds,es - push cs - pop ds - push cs - pop es - mov di,3 -@@againtry: - xor ax,ax - mov dl,[support] - xor dh,dh - int 13h - mov bx,offset bufferread - mov ax,0201h - mov cx,0001h - mov dl,[support] - xor dh,dh - int 13h - jnc @@oknoagaintry - dec di - jnz @@againtry -@@oknoagaintry: - mov si,offset bufferread+3 - mov di,offset myboot - mov cx,size myboot - cld - rep movsb - mov ax,[myboot.sectorsize] - mov bl,[myboot.sectorspercluster] - xor bh,bh - mul bx - mov [clustersize],ax - mov bx,[myboot.hiddensectorsl] - adc bx,[myboot.hiddensectorsh] - mov [adressboot],bx - add bx,[myboot.reservedsectors] - mov [adressfat],bx - xor ax,ax - mov al,[myboot.fatsperdrive] - mul [myboot.sectorsperfat] - add bx,ax - mov [adressparent],bx - mov [adressdirectory],bx - mov ax,32 - mul [myboot.directorysize] - div [myboot.sectorsize] - add bx,ax - mov [adressdata],bx - sub bx,2 - mov [addingvalue],bx - mov ax,[myboot.sectorsperdrive] - div [myboot.sectorspertrack] - xor dx,dx - div [myboot.headsperdrive] - mov [tracksperhead],ax - xor eax,eax - mov ax,[myboot.sectorsperdrive] - sub ax,[adressdata] - mul [myboot.sectorsize] - shl edx,16 - add edx,eax - mov [drivesize],edx - mov [currentdir],0 - mov [adressdirectory],0 - mov [currentdirstr],0 - xor eax,eax - mov ax,[myboot.sectorsperfat] - mul [myboot.sectorsize] - call [cs:mbfindsb],offset datafat,cs - jnc @@hadafatbloc - call [cs:mbcreate],offset datafat,ax - jc @@errorinit - call [cs:mbresident],ax - jc @@errorinit - call [cs:mbchown],ax,cs - jc @@errorinit -@@hadafatbloc: - mov dx,[myboot.sectorsperfat] - mov cx,[adressfat] - xor di,di - ;mov di,offset fatter - mov ds,ax -@@seefat: - call readsector,cx,di - jc @@errorinit - add di,[cs:myboot.sectorsize] - inc cx - dec dx - jnz @@seefat - clc - ret -@@errorinit: - stc - ret -endp initdrive - -datafat db '/fat',0 - -;=============FindFirstFile============== -;Renvois dans DS:%1 un bloc d'info -;-> -;<- Flag Carry si erreur -;======================================== -PROC findfirstfile FAR - ARG @pointer:word - USES cx,si - mov si,[@pointer] - mov cx,[cs:currentdir] - mov [(find si).adressdirectory],cx - xor cx,cx - mov [(find si).entryplace],cx - mov [(find si).firstsearch],1 - call findnextfile,[@pointer] - ret -endp findfirstfile - -;=============FindnextFile============== -;Renvois dans DS:%0 un bloc d'info -;-> -;<- Flag Carry si erreur -;======================================= -PROC findnextfile FAR - ARG @pointer:word - USES ax,bx,cx,di,si,ds,es - push cs - push ds - pop es - pop ds - mov si,[@pointer] - mov cx,[es:(find si).adressdirectory] - mov bx,[es:(find si).entryplace] -@@findnextfileagain: - cmp [es:(find si).firstsearch],1 - je @@first - add bx,size entries - cmp bx,[cs:clustersize] - jb @@nopop -@@first: - mov di,offset bufferentry - mov bx,0 - cmp [cs:currentdir],0 - jne @@notrootdir - cmp [es:(find si).firstsearch],1 - je @@noaddfirst1 - inc cx -@@noaddfirst1: - add cx,[cs:adressparent] - mov al,[cs:myboot.sectorspercluster] -@@readroot: - call readsector,cx,di - jc @@notwell - add di,[cs:myboot.sectorsize] - dec al - jnz @@readroot - sub cx,[cs:adressparent] - jmp @@nopop -@@notrootdir: - cmp [es:(find si).firstsearch],1 - je @@noaddfirst2 - call getfat -@@noaddfirst2: - jc @@notwell - call readcluster,cx,di - jc @@notwell -@@nopop: - mov [es:(find si).firstsearch],0 - mov di,offset bufferentry - add di,bx - cmp [byte ptr di],0 - je @@notwell - mov [es:(find si).entryplace],bx - mov [es:(find si).adressdirectory],cx - cmp [byte ptr di],0E5h - je @@findnextfileagain - cmp [byte ptr di+entries.fileattr],28h - je @@findnextfileagain - cmp [byte ptr di+entries.fileattr],0Fh - je @@findnextfileagain - mov si,di - mov di,[@pointer] - lea di,[es:(find di).result] - mov cx,size entries - cld - rep movsb - clc - ret -@@notwell: - stc - ret -endp findnextfile - -;=============GetFreeSpace=============== -;Renvoie en EDX l'espace disque libre du volume -;-> -;<- Flag Carry si erreur -;======================================== -PROC getfreespace FAR - USES eax,bx - xor eax,eax - call getsector - mul [cs:myboot.sectorsize] - shl edx,16 - add edx,eax - pop eax - ret -endp getfreespace - -;ax=défectueux bx=libre -getsector: - push cx dx - mov dx,[cs:myboot.sectorsperdrive] - sub dx,[cs:addingvalue] - xor ax,ax - xor bx,bx - mov cx,0 -goget: - push cx - call getfat - cmp cx,0FF7h - jne notdefect - inc bx -notdefect: - cmp cx,0 - jne notfree - inc ax -notfree: - pop cx - inc cx - dec dx - jnz goget - pop dx cx - ret -errorfree: - stc - pop dx cx - ret - - -;=============READCLUSTER=============== -;Lit le secteur %0 et le met en ds:%1 -;-> -;<- Flag Carry si erreur -;======================================= -PROC readcluster FAR - ARG @sector:word,@pointer:word - USES ax,bx,dx,si - mov al,[cs:myboot.sectorspercluster] - xor ah,ah - mov bx,ax - mul [@sector] - add ax,[cs:addingvalue] - mov si,[@pointer] -@@readsectors: - call readsector,ax,si - jc @@errorreadincluster - add si,[cs:myboot.sectorsize] - inc ax - dec bx - jnz @@readsectors - clc - ret -@@errorreadincluster: - stc - ret -endp readcluster - -;=============WRITECLUSTER=============== -;Ecrit le cluster %0 et le met en ds:%1 -;-> -;<- Flag Carry si erreur -;===================================================== -PROC writecluster FAR - ARG @sector:word,@pointer:word - USES ax,bx,dx,si - mov al,[cs:myboot.sectorspercluster] - xor ah,ah - mov bx,ax - mul [@sector] - add ax,[cs:addingvalue] - mov si,[@pointer] -@@writesectors: - call writesector,ax,si - jc @@errorwriteincluster - add si,[cs:myboot.sectorsize] - inc ax - dec bx - jnz @@writesectors - clc - ret -@@errorwriteincluster: - stc - ret -endp writecluster - -;=============READSECTOR=============== -;Lit le secteur %0 et le met en ds:%1 -;-> -;<- Flag Carry si erreur -;====================================== -PROC readsector FAR - ARG @sector:word,@pointer:word - USES ax,bx,cx,dx,si,es - push ds - pop es - mov ax,[@sector] - xor dx,dx - div [cs:myboot.sectorspertrack] - inc dl - mov bl,dl - xor dx,dx - div [cs:myboot.headsperdrive] - mov dh,[cs:support] - xchg dl,dh - mov cx,ax - xchg cl,ch - shl cl,6 - or cl,bl - mov bx,[@pointer] - mov si,5 -@@tryagain: - mov ax,0201h - int 13h - jnc @@done - dec si - jnz @@tryagain -@@done: - ret -endp readsector - -;=============WRITESECTOR============ -;Ecrit le secteur %0 pointé par ds:%0 -;-> -;<- Flag Carry si erreur -;==================================== -PROC writesector FAR - ARG @sector:word,@pointer:word - USES ax,bx,cx,dx,si,es - push ds - pop es - mov ax,[@sector] - xor dx,dx - div [cs:myboot.sectorspertrack] - inc dl - mov bl,dl - xor dx,dx - div [cs:myboot.headsperdrive] - mov dh,[cs:support] - xchg dl,dh - mov cx,ax - xchg cl,ch - shl cl,6 - or cl, bl - mov bx,[@pointer] - mov si,5 -@@tryagain: - mov ax,0301h - int 13h - jnc @@done - dec si - jnz @@tryagain -@@done: - ret -endp writesector - -;=============Getname============== -;Renvoie le nom en DS:%0 -;-> AH=11 -;<- Flag Carry si erreur -;================================== -PROC getname FAR - ARG @pointer:word - USES ax,cx,si,di,ds,es - push ds - pop es - push cs - pop ds - mov di,[@pointer] - mov si,offset myboot.drivename - mov cx,11 - rep movsb - mov al,' ' - mov di,[@pointer] - mov cx,11 - repne scasb - mov [byte ptr es:di],0 - ret -endp getname -;=============Getserial============== -;Renvoie le numéro de serie en EAX -;-> -;<- Flag Carry si erreur -;==================================== -PROC getserial FAR - mov eax,[cs:myboot.serialnumber] - ret -endp getserial - -;=============VERIFYSECTOR============== -;Vérifie le secteur %0 -;-> -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;======================================= -PROC verifysector FAR - ARG @sector:word - USES ecx,si,di,ds,es - push cs - pop es - push cs - pop ds - mov si,offset bufferread - call readsector,cx,si - call inverse - call writesector,cx,si - jc @@errorverify - - mov si,offset bufferwrite - call readsector,cx,si - call inverse - jc @@errorverify - - mov si,offset bufferread - call inverse - call writesector,cx,si - jc @@errorverify - - xor ecx,ecx - mov cx,[cs:myboot.sectorsize] - shr cx,2 - mov si,offset bufferread - mov di,offset bufferwrite - cld - rep cmpsd -@@errorverify: - ret - -endp verifysector - -inverse: - push si cx - xor cx,cx -invert: - not [dword ptr si] - add si,4 - add cx,4 - cmp cx,[cs:myboot.sectorsize] - jb invert - pop cx si - ret - -;=============DecompressRle (Fonction 05H)============== -;decompress ds:si en es:di taille bp d‚compress‚ cx compress‚ -;-> AH=5 -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;===================================================== -PROC decompressrle FAR - ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word - USES ecx,dx,si,di,ds,es - mov ds,[@seg1] - mov es,[@seg2] - mov si,[@off1] - mov di,[@off2] - mov dx,[@size] -@@decompression: - mov eax,[ds:si] - cmp al,'/' - jne @@nocomp - cmp si,07FFFh-6 - jae @@thenen - mov ecx,eax - ror ecx,16 - cmp cl,'*' - jne @@nocomp - cmp [byte ptr ds:si+4],'/' - jne @@nocomp - mov al,ch - mov cl,ah - xor ah,ah - xor ch,ch - cld - rep stosb - add si,5 - sub dx,5 - jnz @@decompression - jmp @@thenen -@@nocomp: - mov [es:di],al - inc si - inc di - dec dx - jnz @@decompression -@@thenen: - xor eax,eax - mov ax,di - sub ax,[@off2] - clc - ret -endp decompressrle - -;=============CompressRle (Fonction 06H)============== -;compress ds:si en es:di taille cx d‚compress‚ BP compress‚ -;-> AH=6 -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;===================================================== -PROC compressrle FAR - ARG @seg1:word,@off1:word,@seg2:word,@off2:word,@size:word - USES ax,bx,cx,dx,si,di,ds,es - mov es,[@seg1] - mov ds,[@seg2] - mov di,[@off1] - mov si,[@off2] - mov dx,[@size] -@@againcomp: - mov bx,di - mov al,[es:di] - mov cx,dx - cmp ch,0 - je @@poo - mov cl,0ffh - ;mov cx,bp - ;sub cx,di - ;mov ah,cl -@@poo: - mov ah,cl - inc di - xor ch,ch - repe scasb - sub cl,ah - neg cl - cmp cl,6 - jbe @@nocomp2 - mov [dword ptr si],' * /' - mov [byte ptr si+4],'/' - mov [si+1],cl - mov [si+3],al - add si,5 - dec di - xor ch,ch - sub dx,cx - jnz @@againcomp - jmp @@fini -@@nocomp2: - mov [si],al - inc si - inc bx - mov di,bx - dec dx - jnz @@againcomp -@@fini: - mov ax,si - sub ax,[@off2] - clc - ret -endp compressrle - -;=============Changedir (Fonction 13)============== -;Change le repertoire courant a DS:SI -;-> AH=13 -;<- Flag Carry si erreur, Flag Equal si secteurs égaux -;===================================================== -PROC changedir FAR -ARG @pointer:word -LOCAL @@temp:word:64 -USES cx,si,di,ds,es - push ss - pop es - lea di,[@@temp] - push di - mov si,[@pointer] - mov cx,64/4 - cld - rep movsd - push ss - pop ds - pop di - call searchfile,di - jne @@noch - jc @@noch - ;cmp [si],005Ch ;'/',0 (root dir) - mov cx,[es:(find di).result.filegroup] - mov [cs:currentdir],cx - mov [cs:adressdirectory],cx - cmp [dword ptr es:(find di).result.filename],' .' - je @@theend - cmp [dword ptr es:(find di).result.filename],' ..' - jne @@notback - push cs - push cs - pop ds - pop es - mov di,offset currentdirstr - mov cx,128 - mov al,0 - cld - repne scasb - mov al,'/' - std - repne scasb - inc di - mov [byte ptr es:di],0 - jmp @@theend -@@notback: - push cs - push cs - pop ds - pop es - mov di,offset currentdirstr - mov cx,128 - mov al,0 - cld - repne scasb - dec di - mov al,'/' - cld - stosb - mov dx,di - push ss - pop es - lea di,[@@temp] - mov si,di - mov cx,128 - mov al,0 - cld - repne scasb - sub cx,128 - neg cx - push ss - pop ds - push cs - pop es - mov di,dx - cld - rep movsb -@@theend: - clc - ret -@@noch: - stc - ret -endp changedir - -;=============getdir============== -;Recupere le repertoire courant a DS:%0 -;-> -;<- Flag Carry si erreur -;================================= -PROC getdir FAR - ARG @pointer:word - USES ax,cx,si,di,ds,es - push cs - pop es - mov di,offset currentdirstr - mov cx,128 - mov al,0 - cld - repne scasb - sub cx,128 - neg cx - push ds - pop es - push cs - pop ds - mov si,offset currentdirstr - mov di,[@pointer] - cld - rep movsb - clc - ret -endp getdir - -bufferread db 512 dup (0) -bufferwrite db 512 dup (0) -bufferentry db 512 dup (0) -;fatter db 9*512 dup (0) diff --git a/noyau/font/2_hebrew.fnt b/noyau/font/2_hebrew.fnt deleted file mode 100644 index 9e668d6..0000000 Binary files a/noyau/font/2_hebrew.fnt and /dev/null differ diff --git a/noyau/font/8x11snsf.fnt b/noyau/font/8x11snsf.fnt deleted file mode 100644 index d409f71..0000000 Binary files a/noyau/font/8x11snsf.fnt and /dev/null differ diff --git a/noyau/font/ad&d.fnt b/noyau/font/ad&d.fnt deleted file mode 100644 index c8008de..0000000 Binary files a/noyau/font/ad&d.fnt and /dev/null differ diff --git a/noyau/font/antique.fnt b/noyau/font/antique.fnt deleted file mode 100644 index fe1aa68..0000000 Binary files a/noyau/font/antique.fnt and /dev/null differ diff --git a/noyau/font/applicat.fnt b/noyau/font/applicat.fnt deleted file mode 100644 index b77b2dd..0000000 Binary files a/noyau/font/applicat.fnt and /dev/null differ diff --git a/noyau/font/backward.fnt b/noyau/font/backward.fnt deleted file mode 100644 index 2c971a7..0000000 Binary files a/noyau/font/backward.fnt and /dev/null differ diff --git a/noyau/font/bigserif.fnt b/noyau/font/bigserif.fnt deleted file mode 100644 index 55a358c..0000000 Binary files a/noyau/font/bigserif.fnt and /dev/null differ diff --git a/noyau/font/blcksnsf.fnt b/noyau/font/blcksnsf.fnt deleted file mode 100644 index 1e4e53e..0000000 Binary files a/noyau/font/blcksnsf.fnt and /dev/null differ diff --git a/noyau/font/block.fnt b/noyau/font/block.fnt deleted file mode 100644 index 0ba23fe..0000000 Binary files a/noyau/font/block.fnt and /dev/null differ diff --git a/noyau/font/bold.fnt b/noyau/font/bold.fnt deleted file mode 100644 index 1ccfa59..0000000 Binary files a/noyau/font/bold.fnt and /dev/null differ diff --git a/noyau/font/breeze.fnt b/noyau/font/breeze.fnt deleted file mode 100644 index 96ecb0d..0000000 Binary files a/noyau/font/breeze.fnt and /dev/null differ diff --git a/noyau/font/broadway.fnt b/noyau/font/broadway.fnt deleted file mode 100644 index 0c053eb..0000000 Binary files a/noyau/font/broadway.fnt and /dev/null differ diff --git a/noyau/font/comp.fnt b/noyau/font/comp.fnt deleted file mode 100644 index 6862665..0000000 Binary files a/noyau/font/comp.fnt and /dev/null differ diff --git a/noyau/font/computer.fnt b/noyau/font/computer.fnt deleted file mode 100644 index a763ae7..0000000 Binary files a/noyau/font/computer.fnt and /dev/null differ diff --git a/noyau/font/courier.fnt b/noyau/font/courier.fnt deleted file mode 100644 index dacd3a7..0000000 Binary files a/noyau/font/courier.fnt and /dev/null differ diff --git a/noyau/font/cyrillic.fnt b/noyau/font/cyrillic.fnt deleted file mode 100644 index 421fc97..0000000 Binary files a/noyau/font/cyrillic.fnt and /dev/null differ diff --git a/noyau/font/dblmtx14.fnt b/noyau/font/dblmtx14.fnt deleted file mode 100644 index 6a3a99b..0000000 Binary files a/noyau/font/dblmtx14.fnt and /dev/null differ diff --git a/noyau/font/dblmtx16.fnt b/noyau/font/dblmtx16.fnt deleted file mode 100644 index 112e6f9..0000000 Binary files a/noyau/font/dblmtx16.fnt and /dev/null differ diff --git a/noyau/font/finnish.fnt b/noyau/font/finnish.fnt deleted file mode 100644 index 8da1c96..0000000 Binary files a/noyau/font/finnish.fnt and /dev/null differ diff --git a/noyau/font/font1!!!.dat b/noyau/font/font1!!!.dat deleted file mode 100644 index 792f46e..0000000 Binary files a/noyau/font/font1!!!.dat and /dev/null differ diff --git a/noyau/font/font2!!!.dat b/noyau/font/font2!!!.dat deleted file mode 100644 index ea44254..0000000 Binary files a/noyau/font/font2!!!.dat and /dev/null differ diff --git a/noyau/font/font3!!!.dat b/noyau/font/font3!!!.dat deleted file mode 100644 index c07df6d..0000000 Binary files a/noyau/font/font3!!!.dat and /dev/null differ diff --git a/noyau/font/font4!!!.dat b/noyau/font/font4!!!.dat deleted file mode 100644 index 29d8980..0000000 Binary files a/noyau/font/font4!!!.dat and /dev/null differ diff --git a/noyau/font/frankfrt.fnt b/noyau/font/frankfrt.fnt deleted file mode 100644 index 6123f78..0000000 Binary files a/noyau/font/frankfrt.fnt and /dev/null differ diff --git a/noyau/font/fresno.fnt b/noyau/font/fresno.fnt deleted file mode 100644 index 842ab5c..0000000 Binary files a/noyau/font/fresno.fnt and /dev/null differ diff --git a/noyau/font/future.fnt b/noyau/font/future.fnt deleted file mode 100644 index 1fb73cd..0000000 Binary files a/noyau/font/future.fnt and /dev/null differ diff --git a/noyau/font/greek.fnt b/noyau/font/greek.fnt deleted file mode 100644 index 510a288..0000000 Binary files a/noyau/font/greek.fnt and /dev/null differ diff --git a/noyau/font/hebrew.fnt b/noyau/font/hebrew.fnt deleted file mode 100644 index 9e668d6..0000000 Binary files a/noyau/font/hebrew.fnt and /dev/null differ diff --git a/noyau/font/hollow.fnt b/noyau/font/hollow.fnt deleted file mode 100644 index 0a49678..0000000 Binary files a/noyau/font/hollow.fnt and /dev/null differ diff --git a/noyau/font/hylas.fnt b/noyau/font/hylas.fnt deleted file mode 100644 index fdfd940..0000000 Binary files a/noyau/font/hylas.fnt and /dev/null differ diff --git a/noyau/font/inverted.fnt b/noyau/font/inverted.fnt deleted file mode 100644 index 1ff13cd..0000000 Binary files a/noyau/font/inverted.fnt and /dev/null differ diff --git a/noyau/font/italic.fnt b/noyau/font/italic.fnt deleted file mode 100644 index 2ebc096..0000000 Binary files a/noyau/font/italic.fnt and /dev/null differ diff --git a/noyau/font/italics.fnt b/noyau/font/italics.fnt deleted file mode 100644 index ddb95d8..0000000 Binary files a/noyau/font/italics.fnt and /dev/null differ diff --git a/noyau/font/itt.fnt b/noyau/font/itt.fnt deleted file mode 100644 index 2992c0c..0000000 Binary files a/noyau/font/itt.fnt and /dev/null differ diff --git a/noyau/font/lcd.fnt b/noyau/font/lcd.fnt deleted file mode 100644 index aefe346..0000000 Binary files a/noyau/font/lcd.fnt and /dev/null differ diff --git a/noyau/font/mechanix.fnt b/noyau/font/mechanix.fnt deleted file mode 100644 index 3207764..0000000 Binary files a/noyau/font/mechanix.fnt and /dev/null differ diff --git a/noyau/font/medieval.fnt b/noyau/font/medieval.fnt deleted file mode 100644 index 680613a..0000000 Binary files a/noyau/font/medieval.fnt and /dev/null differ diff --git a/noyau/font/modern-1.fnt b/noyau/font/modern-1.fnt deleted file mode 100644 index 79f69dc..0000000 Binary files a/noyau/font/modern-1.fnt and /dev/null differ diff --git a/noyau/font/norway.fnt b/noyau/font/norway.fnt deleted file mode 100644 index 103b729..0000000 Binary files a/noyau/font/norway.fnt and /dev/null differ diff --git a/noyau/font/norway2.fnt b/noyau/font/norway2.fnt deleted file mode 100644 index 7c17bf6..0000000 Binary files a/noyau/font/norway2.fnt and /dev/null differ diff --git a/noyau/font/old8x8.fnt b/noyau/font/old8x8.fnt deleted file mode 100644 index 6d72f9c..0000000 Binary files a/noyau/font/old8x8.fnt and /dev/null differ diff --git a/noyau/font/oldeng.fnt b/noyau/font/oldeng.fnt deleted file mode 100644 index 14e12a6..0000000 Binary files a/noyau/font/oldeng.fnt and /dev/null differ diff --git a/noyau/font/roman.fnt b/noyau/font/roman.fnt deleted file mode 100644 index f7266c1..0000000 Binary files a/noyau/font/roman.fnt and /dev/null differ diff --git a/noyau/font/sanserif.fnt b/noyau/font/sanserif.fnt deleted file mode 100644 index 8392323..0000000 Binary files a/noyau/font/sanserif.fnt and /dev/null differ diff --git a/noyau/font/script.fnt b/noyau/font/script.fnt deleted file mode 100644 index 65b073f..0000000 Binary files a/noyau/font/script.fnt and /dev/null differ diff --git a/noyau/font/standard.fnt b/noyau/font/standard.fnt deleted file mode 100644 index 00e69f4..0000000 Binary files a/noyau/font/standard.fnt and /dev/null differ diff --git a/noyau/font/stretch.fnt b/noyau/font/stretch.fnt deleted file mode 100644 index e619be7..0000000 Binary files a/noyau/font/stretch.fnt and /dev/null differ diff --git a/noyau/font/thai.fnt b/noyau/font/thai.fnt deleted file mode 100644 index b275bd8..0000000 Binary files a/noyau/font/thai.fnt and /dev/null differ diff --git a/noyau/font/thin.fnt b/noyau/font/thin.fnt deleted file mode 100644 index 22061e5..0000000 Binary files a/noyau/font/thin.fnt and /dev/null differ diff --git a/noyau/heure.asm b/noyau/heure.asm deleted file mode 100644 index 918ab3f..0000000 --- a/noyau/heure.asm +++ /dev/null @@ -1,81 +0,0 @@ -.model tiny -.486 -smart -.code - -org 0h - -start: - -jmp tsr -offsets dd 0 -db 'HOURS' -tsr: - pushf - db 2eh,0ffh,1eh - dw offsets - cli - pusha - push ds es - push cs - push cs - pop ds - pop es - mov ah,22h - mov di,offset infos - int 47h - mov bl,[infos+1] - xor bh,bh - sub bl,8 - mov di,bx - shl di,1 - mov dx,71h - xor eax,eax - mov cx,0B800h - mov es,cx - mov cl,4 - mov bp,8 -show: - dec dx - mov al,cl - out dx,al - inc dx - in al,dx - call showbcd - cmp cl,0 - je finic - mov byte ptr es:[di],':' - add di,2 - sub cl,2 - jmp show -finic: - pop es ds - popa - sti - iret - - -;==============================Affiche le nombre nb hexa en EDX============== -Showbcd: - push ax bx cx edx - mov edx,eax - mov cx,bp - sub cx,32 - neg cx - shl edx,cl - mov ax,bp - shr ax,2 -bcdaize: - rol edx,4 - mov bx,dx - and bx,0fh - add bl,'0' - mov es:[di],bl - add di,2 - dec al - jnz bcdaize - pop edx cx bx ax - ret -infos db 40 dup (0) - -end start diff --git a/noyau/horloge.asm b/noyau/horloge.asm deleted file mode 100644 index 41c7f0d..0000000 --- a/noyau/horloge.asm +++ /dev/null @@ -1,32 +0,0 @@ -.model tiny -.486 -smart -.code - -org 0h - -start: - -jmp tsr -offsets dd 0 -db 'TIMER' -tsr: - pushf - db 2eh,0ffh,1eh - dw offsets - cli - push ax bx es - mov bx,cs:compteur - inc bx - and bx,11b - mov cs:compteur,bx - mov bx,cs:[offset fig+bx] - mov ax,0B800h - mov es,ax - mov es:[0],bl - pop es bx ax - sti - iret -compteur dw 0 -fig db 'Ä\³/' -end start diff --git a/noyau/manette.asm b/noyau/manette.asm deleted file mode 100644 index d291dc2..0000000 --- a/noyau/manette.asm +++ /dev/null @@ -1,298 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'JOYSTICK',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -jmp react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw 0;detectjoystick - ;dw getjoystick - ;dw getjoystickscreen - ;dw configjoystick -isact db 0 - -;envoie en bx,cx les coordonn‚es et en dl les boutons -getjoystick: -push ax cx -mov bx,cs:rx -mov cx,cs:ry -mov al,cs:button -not al -mov cl,4 -shr al,cl -mov dl,al -pop cx ax -ret - -;envoie en di les coordonn‚es ecran et en dl les boutons -getjoystickscreen: -push ax cx -mov di,cs:xy -mov al,cs:button -not al -mov cl,4 -shr al,cl -mov dl,al -pop cx ax -ret -db 'button' -Button db 0 -db 'rx' -rx dw 0 -db 'ry' -ry dw 0 -db 'vx' -VX db 0 -db 'vy' -VY db 0 -db 'x' -X dw 7FFFh -db 'y' -Y dw 7FFFh -speed db 6 -spherex db 0 -spherey db 0 -db 'count' -count db 0 -db 'error' -error db 0 -xy dw 0 -old db 0 - -calibrate db 0 -db 'ticks' -ticks dw 0 -db 'state' -state db 0 -db 'connard' -connard db 1 -connard2 db 1 -;Gestionnaire de joystick -react: - push ax bx cx dx si di bp ds es - push cs - pop ds - mov dx,201h - cmp error, 1 - je gest1 - cmp count,1 - je gest1 - cmp count,2 - je gest2 -gest1: - mov error,0 - mov count,2 - call getticks - mov ticks,ax - out dx,al - in al,dx - and al,00000011b - mov state,al - jmp endgest -gest2: -not connard - call getticks - sub ax,ticks - cmp ax,1FF0h - jb nofinish - mov error,1 - jmp endgest -nofinish: - mov bx,ax - in al,dx - and al,00000011b - cmp state,al - je endgest - xchg state,al - xor al,state - mov cl,4 - or bx,bx - js noadj - shr bx,cl -noadj: - test al,1 - je isy - mov VX,bl - jmp wasx -isy: - test al,2 - je endgest - mov VY,bl -wasx: -mov connard2,0fh - mov count,1 -endgest: - in al,dx - not al - mov cl,4 - shr al,cl - mov button,al - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov cl,speed - movsx bx,VY - shl bx,cl - cmp spherey,0 - jne nolimity - xor ah,ah - mov al,[di] - cmp byte ptr [di+7],4 - jbe text4 - shl ax,3 -text4: - dec ax - cmp bx,0 - jg decy - cmp ry,ax - jae noaddy - jmp nolimity -decy: - cmp ry,0 - je noaddy -nolimity: - sub y,bx -noaddy: - movsx bx,VX - shl bx,cl - cmp spherex,0 - jne nolimitx - xor ah,ah - mov al,[di+1] - cmp byte ptr [di+7],4 - jbe text5 - shl ax,3 -text5: - dec ax - cmp bx,0 - jl decx - cmp rx,ax - jae noaddx - jmp nolimitx -decx: - cmp rx,0 - je noaddx -nolimitx: - add x,bx -noaddx: - mov ax,x - mov bx,0FFFFh - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text1 - shl cx,3 -text1: - mul cx - div bx - mov rx,ax - mov ax,y - xor ch,ch - mov cl,[di] - cmp byte ptr [di+7],4 - jbe text2 - shl cx,3 -text2: - mul cx - div bx - mov ry,ax - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text3 - shl cx,3 -text3: - mul cx - add ax,rx - cmp byte ptr [di+7],4 - mov di,ax - jbe textpoint - mov ax,0A000h - mov es,ax - jmp graphpoint -textpoint: - mov ax,0B800h - mov es,ax - shl di,1 - inc di -graphpoint: - mov bx,xy - cmp byte ptr es:[bx],070h - jne waschanged - mov al,old - mov byte ptr es:[bx],al -waschanged: - mov xy,di - mov al,es:[di] - mov old,al - mov byte ptr es:[di],070h - mov al, 20h - out 0a0h, al - out 20h, al -errormouse: - pop es ds bp di si dx cx bx ax - mov cs:isact,0 - pop bx - iret - infos db 40 dup (0) - - -getticks: -mov al,0 -out 43h,al -jmp wait1 -wait1: -in al,40h -mov ah,al -jmp wait2 -wait2: -in al,40h -xchg ah,al -ret - -end start diff --git a/noyau/mcb.asm b/noyau/mcb.asm deleted file mode 100644 index 7facccc..0000000 --- a/noyau/mcb.asm +++ /dev/null @@ -1,749 +0,0 @@ - -;Affiche le nombre hexa dans %0[dword] -PROC biosprinth FAR - ARG @num:dword - USES ax,bx,cx,edx,si,di - mov edx,[@num] - mov ah,09h - mov di,8 -@@hexaize: - rol edx,4 - mov si,dx - and si,1111b - mov al,[cs:si+offset @@tab] - mov cx,1 - cmp al,32 - jb @@control - mov bx,7 - mov ah,09h - int 10h -@@control: - mov ah,0Eh - int 10h - dec di - jnz @@hexaize - ret -@@tab db '0123456789ABCDEF' -endp biosprinth - -;Affiche le texte ASCIIZ pointé par %0 -PROC biosprint FAR - ARG @pointer:word - USES ax,bx,cx,si - mov si,[@pointer] - mov cx,1 - mov bx,7 -@@again: - lodsb - or al,al - jz @@fin - cmp al,32 - jb @@control - mov ah,09h - int 10h -@@control: - mov ah,0Eh - int 10h - jmp @@again -@@fin: - ret -endp biosprint - -PROC enablea20 FAR - USES ax - mov al,0d1h - out 64h,al - call a20wait - mov al,0dfh - out 60h,al - call a20wait - ;mov al,0ffh - ;out 64h,al - ;call a20wait - ret -endp enablea20 - -PROC disablea20 FAR - USES ax - mov al,0d1h - out 64h,al - call a20wait - mov al,0DDh - out 60h,al - call a20wait - ;mov al,0ffh - ;out 64h,al - ;call a20wait - ret -endp disablea20 - -a20wait: - in al,64h - jmp @@suite -@@suite: - and al,2 - jnz a20wait - ret -;par le system control port A -;in al,92h -;or al,2 -;out 92h,al - -;par le system control port A -;in al,92h -;and al,not 2 -;out 92h,al - -PROC flatmode FAR - USES eax,bx,ds - push cs - pop ds - ; first, calculate the linear address of GDT - xor eax,eax - mov ax,ds - shl eax,4 - add [dword ptr offset @@gdt+2],eax ; store as GDT linear base addr - ; now load the GDT into the GDTR - lgdt [fword ptr offset @@gdt] ; load GDT base - mov bx,1 * size descriptor ; point to first descriptor - cli ; turn off interrupts - mov eax,cr0 ; prepare to enter protected mode - or al,1 ; flip the PE bit - mov cr0,eax ; we're now in protected mode - jmp @@suite -@@suite: - mov fs,bx ; load the FS segment register - and al,0FEh ; clear the PE bit again - mov cr0,eax ; back to real mode - jmp @@suite2 -@@suite2: - sti ; resume handling interrupts - ret ; - -@@gdt descriptor ; the GDT itself - descriptor <0ffffh, 0, 0, 091h, 0cfh, 0> ; 4G data segment -@@gdtend: -endp flatmode - -;Attend l'appuie sur une touche -PROC bioswaitkey FAR - USES ax - xor ax,ax - int 16h - ret -endp bioswaitkey - -firstmb dw 0 - - -;Charge les sections du block %0 -PROC mbloadsection FAR - ARG @blocks:word - USES ax,bx,cx,si,di,ds,es - LOCAL @@toresov:word:60 - mov ax,[@blocks] - mov es,ax - mov ds,ax - cmp [word ptr 0],"EC" - jne @@notace - lea si,[@@toresov] - mov [word ptr ss:si],0FFFFh - mov bx,[ds:exe.sections] - cmp bx,0 - je @@finishloading -@@loading: - cmp [dword ptr bx],0 - je @@finishloading - mov ax,bx - add ax,4 -pushad -call biosprint,ax -popad - call mbcreate,ax,[word ptr bx+2] - jc @@error - inc si - inc si - mov [ss:si],ax - push si - mov si,[bx] - xor di,di - mov es,ax - mov cx,[bx+2] - cld - rep movsb - pop si - add bx,4 -@@gonext: - inc bx - cmp [byte ptr bx],0 - jne @@gonext - inc bx - jmp @@loading -@@finishloading: - cmp [word ptr ss:si],0FFFFh - je @@finishdepands - call mbloadfuncs,[word ptr ss:si] - jc @@depandserror - dec si - dec si - jmp @@finishloading -@@finishdepands: - ret -@@notace: - stc - ret -@@error: - stc - ret -@@depandserror: - stc - ret -endp mbloadsection - - -;Initialise les blocs de mémoire en prenant memorystart pour segment de base -PROC mbinit FAR - USES ax,cx,si,di,ds,es - cmp [cs:firstmb],0 - jne @@alreadyok - push cs - pop ds - mov [cs:firstmb],memorystart - mov ax,memorystart-2 - mov es,ax - mov si,offset afree - xor di,di - mov cx,size mb - rep movsb - clc - ret -@@alreadyok: - stc - ret -endp mbinit - -afree mb <"HN",0,0,0,0A000h-memorystart,"Libre"> - db 0 - -;Creér un bloc de nom %0 de taille %1 (octets) -> n°segment dans AX -PROC mbcreate FAR - ARG @blocks:word,@size:word - USES bx,cx,dx,si,di,ds,es - push gs - mov ax,[ss:bp+4] - mov dx,ax - dec dx - dec dx - mov gs,dx - cmp [word ptr gs:0x0],'NH' - je @@oktoset - mov ax,memorystart -@@oktoset: - mov gs,ax - mov cx,[@size] - shr cx,4 - inc cx - mov bx,[cs:firstmb] - dec bx - dec bx - mov dl,true -@@searchfree: - cmp dl,false - je @@notenougtmem - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - cmp [es:mb.isnotlast],true - sete dl - cmp [es:mb.reference],free - jne @@notsogood - mov ax,[es:mb.sizes] - cmp cx,ax - ja @@notsogood - mov [word ptr es:mb.check],"NH" - mov [es:mb.isnotlast],true - mov [es:mb.reference],gs - mov [es:mb.isresident],false - lea di,[es:mb.names] - push cx - mov cx,24/4 - mov si,[@blocks] - cld - rep movsd - pop cx - inc bx - inc bx - sub ax,cx - cmp ax,0 - je @@nofree - dec ax - dec ax - mov [es:mb.sizes],cx - add cx,bx - mov es,cx - mov si,offset afree - xor di,di - mov cx,size mb - push cs - pop ds - cld - rep movsb - mov [es:mb.isnotlast],dl - mov [es:mb.sizes],ax -@@nofree: - mov ax,bx - pop gs - clc - ret -@@notsogood: - inc bx - inc bx - add bx,[es:mb.sizes] - jmp @@searchfree -@@memoryerror: - pop gs - stc - ret -@@notenougtmem: - pop gs - stc - ret -endp mbcreate - -;Libère le bloc de mémoire %0 et ses sous blocs -PROC mbfree FAR - ARG @blocks:word - USES ax,bx,cx,si,di,ds,es - mov bx,[@blocks] - mov ax,bx - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - cmp [es:mb.reference],free - je @@wasfree - cmp [es:mb.isresident],true - je @@wasresident - mov [es:mb.reference],free - push cs - pop ds - mov si,offset @@isfree - lea di,[es:mb.names] - mov cx,6 - cld - rep movsb - mov bx,[cs:firstmb] - dec bx - dec bx -@@searchtofree: - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@nottofree - cmp ax,[es:mb.reference] - jne @@nottofree - mov [es:mb.isresident],false - mov [es:mb.reference],free - mov si,offset @@isfree - lea di,[es:mb.names] - mov cx,6 - cld - rep movsb -@@nottofree: - cmp [es:mb.isnotlast],true - je @@searchtofree - call mbclean - ret -@@memoryerror: - stc - ret -@@wasfree: - stc - ret -@@wasresident: - stc - ret - -@@isfree db "libre",0 -endp mbfree - -;Mise a nivo de la mémoire (jonction de blocs libre) -PROC mbclean FAR - USES ax,bx,dx,es,gs - mov bx,[cs:firstmb] - dec bx - dec bx - xor ax,ax - xor dx,dx -@@searchfree: - mov gs,bx - cmp [word ptr gs:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[gs:mb.sizes] - cmp [word ptr gs:mb.sizes],0 - je @@notenougtmem - cmp [gs:mb.reference],free - jne @@notfree - cmp ax,0 - je @@notmeetfree - add dx,[gs:mb.sizes] - mov [word ptr gs:mb.check],0 - mov [dword ptr gs:mb.names],0 - inc dx - inc dx - jmp @@nottrigered -@@notmeetfree: - xor dx,dx - mov ax,gs - jmp @@nottrigered -@@notfree: - cmp ax,0 - je @@nottrigered - mov es,ax - add [es:mb.sizes],dx - xor ax,ax -@@nottrigered: - cmp [gs:mb.isnotlast],true - je @@searchfree - cmp ax,0 - je @@reallyfinish - mov es,ax - add [es:mb.sizes],dx - mov [es:mb.isnotlast],false -@@reallyfinish: - clc - ret -@@notenougtmem: - stc - ret -@@memoryerror: - stc - ret -endp mbclean - -;Rend le segment %0 résident -PROC mbresident FAR - ARG @blocks:word - USES bx,es - mov bx,[@blocks] - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - mov [es:mb.isresident],true - ret -@@memoryerror: - stc - ret -endp mbresident - -;Rend le segment %0 non résident -PROC mbnonresident FAR - ARG @blocks:word - USES bx,es - mov bx,[@blocks] - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - mov [es:mb.isresident],false - ret -@@memoryerror: - stc - ret -endp mbnonresident - - -;Change le proprietaire de %0 a %1 -PROC mbchown FAR - ARG @blocks:word,@owner:word - USES bx,dx,es - mov bx,[@blocks] - dec bx - dec bx - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - cmp [es:mb.reference],free - je @@wasfree - mov dx,[@owner] - mov [es:mb.reference],dx - ret -@@memoryerror: - stc - ret -@@wasfree: - stc - ret -endp mbchown - -;Alloue un bloc /data de CX caractere pour le process appelant -> ax -PROC mballoc FAR - ARG @size:word - USES si,ds - push cs - pop ds - call mbcreate,offset @@data,[@size] - call mbchown,ax,[word ptr ss:bp+4] - ret - -@@data db '/data',0 -endp mballoc - -;Renvoie en AX le MB n° %0 carry quand terminé -PROC mbget FAR - ARG @num:word - USES bx,dx,es - mov bx,[cs:firstmb] - dec bx - dec bx - xor dx,dx -@@searchfree: - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@memoryerror - cmp dx,[@num] - je @@foundmcb - ja @@notfound - inc dx - cmp [es:mb.isnotlast],true - je @@searchfree -@@memoryerror: - stc - ret -@@foundmcb: - mov ax,es - inc ax - inc ax - clc - ret -@@notfound: - stc - ret -endp mbget - -;Renvoie en AX le MCB qui correspond a ds:%0 -PROC mbfind FAR - ARG @blocks:word - USES bx,si,di,es - mov bx,[cs:firstmb] - dec bx - dec bx - mov si,[@blocks] -@@search: - mov es,bx - lea di,[es:mb.names] - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@memoryerror - push si di -@@cmpnames: - mov al,[es:di] - cmp al,[ds:si] - jne @@ok - cmp al,0 - je @@ok - inc si - inc di - jmp @@cmpnames -@@ok: - pop di si - je @@foundmcb - cmp [es:mb.isnotlast],true - je @@search -@@notfound: - stc - ret -@@memoryerror: - stc - ret -@@foundmcb: - mov ax,es - inc ax - inc ax - clc - ret -endp mbfind - - -;Renvoie en AX le sous mcb qui correspond a %0 et qui appartien a %1 -PROC mbfindsb FAR - ARG @blocks:word,@owner:word - USES bx,dx,si,di,es - mov bx,[cs:firstmb] - dec bx - dec bx - mov si,[@blocks] - lea di,[es:mb.names] - mov dx,[@owner] -@@search: - mov es,bx - cmp [word ptr es:mb.check],"NH" - jne @@memoryerror - inc bx - inc bx - add bx,[es:mb.sizes] - cmp [es:mb.sizes],0 - je @@memoryerror - push si di -@@cmpnames: - mov al,[es:di] - cmp al,[ds:si] - jne @@ok - cmp al,0 - je @@ok - inc si - inc di - jmp @@cmpnames -@@ok: - pop di si - jne @@notfoundmcb - cmp [es:mb.reference],dx - je @@foundmcb -@@notfoundmcb: - cmp [es:mb.isnotlast],true - je @@search -@@notfound: - stc - ret -@@foundmcb: - mov ax,es - inc ax - inc ax - clc - ret -@@memoryerror: - stc - ret -endp mbfindsb - -;Resouds les dépendances du bloc de mémoire %0 -PROC mbloadfuncs FAR - ARG @blocks:word - USES ax,bx,cx,dx,si,ds - mov ds,[@blocks] - cmp [word ptr 0],"EC" - jne @@notace - mov si,[ds:exe.imports] - cmp si,0 - je @@endofloading -@@loadfuncs: - cmp [word ptr si],0 - je @@endofloading - call mbsearchfunc,si - jnc @@toendoftext - mov bx,si -;pushad -;call biosprint,si -;popad -@@findend: - inc bx - cmp [byte ptr bx], ':' - jne @@findend - mov [byte ptr bx],0 - call [cs:projfile],si - jc @@erroronload - mov [byte ptr bx],':' -;pushad -;call biosprint,si -;popad - call mbsearchfunc,si - jc @@libnotexist -@@toendoftext: - mov cl,[si] - cmp cl,0 - je @@oktonext - inc si - jmp @@toendoftext -@@oktonext: - inc si - mov [si],ax - mov [si+2],dx - add si,4 - jmp @@loadfuncs -@@endofloading: - clc - ret -@@notace: - stc - ret -@@libnotexist: - stc - ret -@@erroronload: - stc - ret -endp mbloadfuncs - - -;Recherche une fonction pointé par DS:%0 en mémoire et renvoie son adresse en DX:AX -PROC mbsearchfunc FAR - ARG @func:word - USES bx,si,di,es - mov bx,[@func] - mov si,bx -@@findend: - inc bx - cmp [byte ptr bx], ':' - jne @@findend - mov [byte ptr bx],0 - call mbfind,si - mov [byte ptr bx],':' - jc @@notfoundattallthesb - mov es,ax - cmp [word ptr es:exe.checks],"EC" - jne @@notfoundattallthesb - mov di,[es:exe.exports] - inc bx - inc bx -@@functions: - cmp [word ptr es:di],0 - je @@notfoundattallthesb - mov si,bx -@@cmpnamesfunc: - mov al,[es:di] - cmp al,[ds:si] - jne @@notfoundthesb - cmp al,0 - je @@seemsok - inc si - inc di - jmp @@cmpnamesfunc -@@notfoundthesb: - mov al,[es:di] - cmp al,0 - je @@oktonext - inc di - jmp @@notfoundthesb -@@oktonext: - inc di - inc di - inc di - jmp @@functions -@@seemsok: - mov dx,es - mov ax,[es:di+1] - clc - ret -@@notfoundattallthesb: - stc - ret -endp mbsearchfunc diff --git a/noyau/port.asm b/noyau/port.asm deleted file mode 100644 index c4a588d..0000000 --- a/noyau/port.asm +++ /dev/null @@ -1,699 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'LPT ',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx ax -mov ah,4 -mov bh,1 -int 50h -mov bl,al -pop ax -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -cmp bl,80h -jae react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw getlptin - dw getlptout - dw getlptinout - dw setlptin - dw setlptout - dw setlptinout - dw getlpt - dw getfirstlpt - dw setemettor - dw setreceptor - dw settimeout - dw gettimeout - dw receivelpt - dw sendlpt - dw receivelptblock - dw sendlptblock - dw receivecommand - dw sendcommand - -react: -push ds es -mov cs:isact,1 -pushad -push cs -pop ds -push cs -pop es -cmp byte ptr never,1 -je oknever -mov bl,[drv+3] -sub bl,'0' -xor bh,bh -call getlpt -dec bl -shl bl,1 -mov al,7 -sub al,bl -mov ah,40 -mov di,offset video -int 47h -push ax -mov ah,01h -int 50h -mov ah,21 -mov cl,4 -int 47h -sti -mov al,0111b -call setlptout -call setreceptor -call initlpt -jc errorie -mov cx,0 -mov ah,20 -mov bx,1012h -mov si,offset initok -int 47h -cmp byte ptr always,1 -je yes -mov ah,20 -mov bx,1010h -mov si,offset mdd -int 47h -mov ah,13 -mov si,offset drv -int 47h -mov ah,6 -int 47h -mov ah,20 -mov bx,1011h -mov si,offset msg -int 47h -waitkey: -mov ax,0 -int 16h -cmp al,'n' -je no -cmp al,'N' -je no -cmp al,'Y' -je yes -cmp al,'y' -je yes -cmp al,'e' -je nev -cmp al,'E' -je nev -cmp al,'a' -je alw -cmp al,'A' -je alw -jmp waitkey -yes: -call receivecommand -jc errortimeout -no: -mov al,0111b -call setlptout -cli -mov ah,41 -mov si,offset video -int 47h -pop ax -mov ah,00h -int 50h -mov ah,09h -int 50h -oknever: -popad -pop es ds -mov cs:isact,0 -pop bx -jmp endofint -errorie: -mov si,offset inits -jmp show -errortimeout: -mov si,offset timeouts -show: -mov ah,20 -mov bx,1012h -int 47h -mov ax,0 -int 16h -jmp no -nev: -mov byte ptr never,1 -jmp no -alw: -mov byte ptr always,1 -jmp yes -initok db 'Initialisation is realised !',0 -inits db 'Error on initialisation',0 -timeouts db 'Connection lost or timeout complete !!',0 -mdd db 'Connection demand on ',0 -msg db 'Accept connection ? (Y)es (N)o n(E)ver (A)lways',0 -isact db 0 -always db 0 -never db 0 - -;envois une commande al -sendcommand: -push ax bx cx di -mov bl,al -xor bh,bh -shl bx,1 -add bx,offset cmde -call cs:[bx] -pop di cx bx ax -ret -cmde dw nothing - dw getram - -;recupŠre la ram en ds:si de cx distant caractŠres en es:di local -getram: -push ax bx cx ds -mov bx,offset command -mov cs:[bx+2],ds -mov cs:[bx],si -mov cs:[bx+4],cx -push cs -pop ds -mov si,bx -mov cx,6 -call sendlptblock -jc endofget -call receivelptblock -endofget: -pop ds cx bx ax -ret - -;Re‡ois une commande et l'execute -Receivecommand: -push ax bx cx di ds es -push cs -pop es -push cs -pop ds -mov di,offset command -call receivelptblock -jc endofno -mov bl,al -xor bh,bh -shl bx,1 -add bx,offset cmd -call cs:[bx] -clc -endofno: -pop es ds di cx bx ax -ret - -command db 25 dup (0) -cmd dw nothings - dw sendram - dw receiveram - dw sendreg - dw receivereg - dw sendport - dw receiveport - dw letexecute -nothings: -ret - -letexecute: -push ds es fs gs -pushad -push cs -push offset suite -mov ax,es:[di+2] -mov ds,ax -mov es,ax -mov fs,ax -mov gs,ax -push ax -mov ax,es:[di] -push ax -DB 0CBh -suite: -popad -pop gs fs es ds -ret - -Sendram: -push ax cx si ds -mov si,es:[di] -mov ax,es:[di+2] -mov ds,ax -mov cx,es:[di+4] -call sendlptblock -pop ds si cx ax -ret - -receiveram: -sendreg: -receivereg: - -sendport: -push ax cx dx si -mov dx,es:[di] -in ax,dx -mov cx,2 -mov si,offset tempblock -mov ds:[si],ax -call sendlptblock -pop si dx cx ax -ret - -receiveport: -push ax dx -mov dx,es:[di] -mov ax,es:[di+2] -out dx,ax -pop dx ax -ret - -tempblock db 25 dup (0) - -;---------Segment Adress----------- -Bios equ 040h -;---------Offset Adress------------ -Lptadr equ 008h -Timer equ 06Ch -;---------Constant----------------- -onesec equ 18 -tensec equ 182 -Ack equ 00 -Nack equ 0FFh -maxtry equ 10 - -Initlpt: -push ax ecx -call StartTimer -cmp cs:emettor,0 -je receptinit -mov al,10000b -call SetLptOut -waitinit1: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz waitinit1 -jmp endinit -receptinit: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz receptinit -mov al,10000b -call SetLptOut -endinit: -clc -pop ecx ax -ret -errorinit: -stc -pop ecx ax -ret - - -;-Envoie DL (dh) JNE si problŠme JNC error timeout -Sendlpt: -push ax bx ecx -call StartTimer -mov dh,dl -mov al,dl -and al,0Fh -call SetLptOut -waitSend: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jnc waitsend -and al,0Fh -mov bl,al -call StartTimer ;///// -mov al,dh -shr al,4 -or al,10000b -call SetLptOut -waitSend2: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jc waitsend2 -and al,0Fh -shl al,4 -add bl,al -cmp dl,bl -pop ecx bx ax -clc -ret -errorsend: -pop ecx bx ax -stc -ret - - -;-Re‡ois DL (dh) -Receivelpt: -push ax bx ecx -call StartTimer -waitreceive: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jnc waitreceive -and al,0Fh -mov dl,al -call SetLptOut -call StartTimer ;///// -waitreceive2: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jc waitreceive2 -and al,0Fh -mov dh,al -shl dh,4 -add dl,dh -or al,10000b -call SetlptOut -clc -pop ecx bx ax -ret -errorreceive: -stc -pop ecx bx ax -ret - -;-AX -SetTimeout: -mov cs:Timeout,dx -ret - -timeout dw tensec - -getTimeout: -mov dx,cs:Timeout -ret - -SetEmettor: -mov cs:Emettor,1 -ret - -Emettor db 0 - -SetReceptor: -mov cs:Emettor,0 -ret - -;->bx Nøport->Adresse dx -GetLpt: -push ax bx ds -mov ax,bios -mov ds,ax -dec bx -shl bx,1 -mov dx,ds:[Lptadr+bx] -mov cs:lpt,dx -pop ds bx ax -ret -lpt dw 0 - -;->bx Nøport->Adresse dx -GetFirstLpt: -push ax ds -mov ax,bios -mov ds,ax -xor bx,bx -findlpt: -mov dx,ds:[Lptadr+bx] -cmp dx,0 -jne oklpt -add bx,2 -cmp bx,4 -jbe findlpt -oklpt: -mov cs:lpt,dx -pop ds ax -ret - -;-> -StartTimer: -push ax ecx ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -mov cs:times,ecx -pop ds ecx ax -ret -times dd 0 - -;->Ecx time elapsed -EndTimer: -push ax ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -sub ecx,cs:times -pop ds ax -ret - -;-> -GetLptOut: -push dx -mov dx,cs:lpt -in al,dx -pop dx -ret - -GetLptIn: -push dx -mov dx,cs:lpt -inc dx -in al,dx -shr al,3 -pop dx -ret - -GetLptInOut: -push dx -mov dx,cs:lpt -add dx,2 -in al,dx -and al,11111b -pop dx -ret - -SetLptOut: -push dx -mov dx,cs:lpt -out dx,al -pop dx -ret - -SetLptIn: -push dx -mov dx,cs:lpt -inc dx -out dx,al -pop dx -ret - -SetLptInOut: -push dx -mov dx,cs:lpt -add dx,2 -out dx,al -pop dx -ret - -;R‚alise un checksum 8 bits sur donn‚es DS:SI, nb CX r‚sultat dans dl -Checksum8: -push cx si -check: -add dl,[si] -inc si -dec cx -jnz check -pop si cx -ret - -;DS:SI pointeur sur donn‚es, CX nombres de donn‚es, AL token -SendLptBlock: -push ax bx cx edx si edi bp -mov dx,cx -shl edx,16 -mov dh,al -call checksum8 -mov edi,edx -xor dh,dh -mov bp,dx -mov ah,maxtry -retry: -mov bl,4 -xor al,al -header: -mov dx,di -call sendlpt -setne al -jc outt -rol edi,8 -dec bl -jnz header -cmp al,0 -jne notgood -mov dl,ACK -jmp allsend -notgood: -mov dl,NACK -allsend: -call sendlpt -setne al -jc outt -cmp al,0 -je okheader -dec ah -jnz retry -jmp outt -okheader: -cmp cx,0 -je endoftrans -mov di,maxtry -retry2: -mov bx,cx -xor ax,ax -body: -mov dl,[si+bx-1] -add ah,dl -call sendlpt -setne al -jc outt -dec bx -jnz body -cmp al,0 -jne notgood2 -mov dl,ACK -jmp allisend -notgood2: -mov dl,NACK -allisend: -call sendlpt -setne al -jc outt -cmp al,0 -je endoftrans -dec di -jnz retry2 -outt: -stc -endoftrans: -mov al,ah -xor ah,ah -cmp bp,ax -pop bp edi si edx cx bx ax -ret - -;Receptionne en es:di les donn‚es au nombres de CX token AL (AH) (ECX) -receiveLptBlock: -push bx dx si bp -mov ah,maxtry -retrye: -mov bl,4 -headere: -call receivelpt -jc outte -mov cl,dl -rol ecx,8 -dec bl -jnz headere -call receivelpt -jc outte -cmp dl,ACK -je okheadere -dec ah -jnz retrye -jmp outte -okheadere: -mov al,ch -xor ch,ch -mov bp,cx -rol ecx,16 -cmp cx,0 -je endoftranse -mov si,maxtry -retrye2: -mov bx,cx -xor ah,ah -bodye: -call receivelpt -jc outte -mov es:[di+bx-1],dl -add ah,dl -dec bx -jnz bodye -call receivelpt -jc outte -cmp dl,ACK -je endoftranse -dec si -jnz retrye2 -outte: -stc -endoftranse: -mov bl,ah -xor bh,bh -cmp bp,bx -pop bp si dx bx -ret -video db 0 -end start diff --git a/noyau/souris.asm b/noyau/souris.asm deleted file mode 100644 index ab8b210..0000000 --- a/noyau/souris.asm +++ /dev/null @@ -1,327 +0,0 @@ -.model tiny -.486 -smart -.code -org 0h -start: -jmp tsr -drv db 'MOUSE',0 -Tsr: -cli -cmp ax,1234h -jne nomore -mov ax,4321h -jmp itsok -nomore: -push bx ax -mov ah,4 -mov bh,0 -int 50h -mov bl,al -pop ax -cmp byte ptr cs:isact,1 -je nottest -mov cs:isact,1 -and bl,10000b -cmp bl,16 -jae react -mov bl,ah -xor bh,bh -shl bx,1 -mov bx,cs:[bx].tables -mov cs:current,bx -pop bx -call cs:current -itsok: -jnc noerror -push bp -mov bp,sp -or byte ptr [bp+6],1b -pop bp -mov ax,cs -shl eax,16 -mov ax,cs:current -jmp endofint -noerror: -push bp -mov bp,sp -and byte ptr [bp+6],0FEh -pop bp -endofint: -mov cs:isact,0 -sti -iret -nottest: -pop bx -jmp endofint -current dw 0 -tables dw cmdmouse - dw cmdmouse2 - dw detectmouse - dw getmouse - dw getmousescreen - dw configmouse - -isact db 0 - -;Envoie une commande AL … la souris via controleur clavier -cmdmouse: - push ax -videbuff1: - in al, 64h - and al, 10b - jne videbuff1 - mov al, 00d4h - out 64h, al -videbuff2: - in al, 64h - and al, 10b - jne videbuff2 - pop ax - out 60h, al - in al, 60h - ret - -;Envoie une commande2 AL … la souris via controleur clavier carry=nomouse -cmdmouse2: - push ax -videbuff21: - in al, 64h - and al, 10b - jne videbuff21 - mov al, 0060h - out 64h, al -videbuff22: - in al, 64h - and al, 10b - jne videbuff22 - pop ax - out 60h, al - in al, 60h - ret - -Detectmouse: - push ax cx - mov al, 0a8h ;AUX enable - out 64h, al - mov al, 0f3h ;Set sample - call cmdmouse - mov al, 100 ;Set sample - call cmdmouse - mov al, 0e8h ;Set resolution - call cmdmouse - mov al, 01 ;Set resolution - call cmdmouse - mov al, 0e7h ;Set scale 2:1 - call cmdmouse - mov al, 0f4h ;Enable device - call cmdmouse - mov al, 47h ;Interruption ON - call cmdmouse2 - mov cx, 1024 -testmouse: - in al, 60h ;Lecture du port de donn‚es - cmp al, 250 ;Test si il y a une souris - je okmouse - dec cx - jnz testmouse - stc - jmp endoftest -okmouse: - clc -endoftest: - pop cx ax - ret - -;envoie en bx,cx les coordonn‚es et en dl les boutons -getmouse: -mov bx,cs:rx -mov cx,cs:ry -mov dl,cs:button -sub dl,8 -and dl,0Fh -clc -ret - -;envoie en di les coordonn‚es ecran et en dl les boutons -getmousescreen: -mov di,cs:xy -mov dl,cs:button -sub dl,8 -and dl,0Fh -clc -ret - - -;configure la rapidit‚ dans cl et dans ah,al sphŠre x et y -Configmouse: -mov cs:speed,cl -mov cs:spherex,ah -mov cs:spherey,al -ret - -Button db 0 -rx dw 0 -ry dw 0 -VX db 0 -VY db 0 -X dw 7FFFh -Y dw 7FFFh -speed db 6 -spherex db 0 -spherey db 0 -count db 0 -error db 0 -xy dw 0 -old db 0 -;Gestionnaire de souris PS/2 -react: - push ax bx cx dx di ds es - push cs - pop ds - in al, 60h - cmp error, 1 - je gest1 - cmp count, 1 - je gest1 - cmp count, 2 - je gest2 - cmp count, 3 - je gest3 - -gest1: - mov count, 2 - mov Button, al - and al, 00001000b - cmp al, 8 - je gest1end - mov error, 1 - jmp gest1end2 -gest1end: - mov error, 0 -gest1end2: - mov count, 2 - jmp endgest -gest2: - mov count, 3 - mov VX, al - jmp endgest -gest3: - mov count, 1 - mov VY, al - jmp endgest -endgest: - cmp error,1 - je errormouse - push cs - pop es - mov di,offset infos - mov ah,34 - int 47h - mov cl,speed - movsx bx,VY - shl bx,cl - cmp spherey,0 - jne nolimity - xor ah,ah - mov al,[di] - cmp byte ptr [di+7],4 - jbe text4 - shl ax,3 -text4: - dec ax - cmp bx,0 - jg decy - cmp ry,ax - jae noaddy - jmp nolimity -decy: - cmp ry,0 - je noaddy -nolimity: - sub y,bx -noaddy: - movsx bx,VX - shl bx,cl - cmp spherex,0 - jne nolimitx - xor ah,ah - mov al,[di+1] - cmp byte ptr [di+7],4 - jbe text5 - shl ax,3 -text5: - dec ax - cmp bx,0 - jl decx - cmp rx,ax - jae noaddx - jmp nolimitx -decx: - cmp rx,0 - je noaddx -nolimitx: - add x,bx -noaddx: - mov ax,x - mov bx,0FFFFh - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text1 - shl cx,3 -text1: - mul cx - div bx - mov rx,ax - mov ax,y - xor ch,ch - mov cl,[di] - cmp byte ptr [di+7],4 - jbe text2 - shl cx,3 -text2: - mul cx - div bx - mov ry,ax - xor ch,ch - mov cl,[di+1] - cmp byte ptr [di+7],4 - jbe text3 - shl cx,3 -text3: - mul cx - add ax,rx - cmp byte ptr [di+7],4 - mov di,ax - jbe textpoint - mov ax,0A000h - mov es,ax - jmp graphpoint -textpoint: - mov ax,0B800h - mov es,ax - shl di,1 - inc di -graphpoint: - mov bx,xy - cmp byte ptr es:[bx],070h - jne waschanged - mov al,old - mov byte ptr es:[bx],al -waschanged: - mov xy,di - mov al,es:[di] - mov old,al - mov byte ptr es:[di],070h - mov al, 20h - out 0a0h, al - out 20h, al -errormouse: - pop es ds di dx cx bx ax - mov cs:isact,0 - pop bx - iret - infos db 40 dup (0) - -end start diff --git a/noyau/systeme.asm b/noyau/systeme.asm deleted file mode 100644 index f40ce49..0000000 --- a/noyau/systeme.asm +++ /dev/null @@ -1,297 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\cpu.h" -include "..\include\pci.h" -include "..\include\fat.h" - -memorystart equ 0052h ;premier bloc de la mémoire - -org 0h - -mb0: -header exe <"CE",1,0,0,offset exports,offset imports,offset section,offset start> - -start: - push cs - push cs - push cs - push cs - pop ds - pop es - pop fs - pop gs - call biosprint,offset return - call biosprint,offset msg_memory - call biosprint,offset return - call biosprint,offset msg_memory_init - call mbinit - jc error - call biosprint,offset msg_ok - call biosprint,offset msg_memory_section - mov ax,cs - call mbloadsection,ax - jc error - call biosprint,offset msg_ok - call biosprint,offset msg_memory_jumps - jmp [dword ptr cs:pointer] -pointer: - dw suite - dw memorystart -suite: - push cs - push cs - push cs - push cs - pop ds - pop es - pop fs - pop gs - call biosprint,offset msg_ok - call biosprint,offset msg_video_init - call [cs:setvideomode],2 - jc error - call [cs:clearscreen] - call [cs:print],offset msg_memory - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_memory_init - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_memory_section - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_memory_jumps - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_video_init - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_handler - ;call installirqhandler - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_cpu_detect - call [cs:cpuinfo],offset thecpu - call [cs:setinfo],offset thecpu,offset temp - call [cs:print],offset msg_ok2 - push offset temp - xor eax,eax - mov al,[thecpu.family] - push eax - mov al,[thecpu.models] - push eax - mov al,[thecpu.stepping] - push eax - push offset thecpu.names - push offset thecpu.vendor - call [cs:print],offset msg_cpu_detect_inf - call [cs:print],offset msg_pci - call [cs:pciinfo],offset thepci - jc nopci - call [cs:print],offset msg_ok2 - xor eax,eax - mov al,[thepci.maxbus] - push eax - mov al,[thepci.version_minor] - push eax - mov al,[thepci.version_major] - push eax - call [cs:print],offset msg_pci_info - call [cs:print],offset msg_pci_enum - xor bx,bx - xor cx,cx - xor si,si -searchpci: - call [cs:getcardinfo],bx,cx,si,offset temp - jc stopthis - mov al,[(pcidata offset temp).subclass] - push ax - mov al,[(pcidata offset temp).class] - push ax - call [cs:getpcisubclass] - push dx - push ax - mov al,[(pcidata offset temp).class] - xor ah,ah - push ax - call [cs:getpciclass] - push dx - push ax - push 4 - push esi - push 4 - push ecx - push 4 - push ebx - mov ax,[(pcidata offset temp).device] - push eax - mov ax,[(pcidata offset temp).vendor] - push eax - call [cs:print],offset msg_pci_card - inc si - cmp si,7 - jbe searchpci -stopthis: - xor si,si - inc cx - cmp cx,31 - jbe searchpci - xor cx,cx - inc bx - cmp bx,16 - jbe searchpci - jmp next -nopci: - call [cs:print],offset msg_echec2 -next: - call [cs:detectvmware] - jne novirtual - call [cs:print],offset msg_vmware -novirtual: - call [cs:print],offset msg_flat - call enablea20 - call flatmode - xor ax,ax - mov fs,ax - mov esi,0100000h - mov [dword ptr fs:esi],"OKIN" - call [cs:print],offset msg_ok2 - call [cs:print],offset msg_disk_init - call [cs:initdrive] - jc error2 - call [cs:print],offset msg_ok2 - call [cs:execfile],offset shell - -error2: - call [cs:print],offset msg_error2 - call bioswaitkey - jmp far 0FFFFh:0000h - -error: - call biosprint,offset msg_error - call bioswaitkey - jmp far 0FFFFh:0000h - -shell find <"COMMANDE.CE",0,0,0,1,> -thepci pciinf <> -thecpu cpu <> -temp db 256 dup (0) -return db 0dh,0ah,0 -msg_memory db "Initialisation de la memoire",0 -msg_memory_init db " -Creation du bloc primordial",0 -msg_memory_section db " -Developpement des sections",0 -msg_memory_jumps db "Redirection du systeme",0 -msg_video_init db "Initialisation du pilote VIDEO",0 -msg_handler db "Initialisation du gestionnaire d'interruption",0 -msg_cpu_detect db "Dectection du processeur",0 -msg_cpu_detect_inf db " -Fondeur : %0\l -Modele : %0\l -Revision : %u\l -Version : %u\l -Famille : %u\l -Technologies: %0\l",0 -msg_pci db "Detection des systemes PCI",0 -msg_pci_info db " -Version : %yB.%yB\l -Numero bus max: %u\l",0 -msg_pci_enum db " -Enumeration des peripheriques PCI:\l" - db " |Vendeur|Modele|Bus |Dev.|Func|Classe.Sous-classe\l",0 -msg_pci_card db " | %hW | %hW |%w|%w|%w|%0P.%0P\l",0 -msg_vmware db "\c04 VMWare a ete detecte !!!\c07\l",0 -msg_flat db "Initialisation du Flat Real Mode\l",0 -msg_disk_init db "Initialisation du pilote DISQUE\l",0 - - -msg_error db " [Erreur]",0dh,0ah,"",0 -msg_ok db " [ Ok ]",0dh,0ah,0 -msg_error2 db "\h70 [\c04Erreur\c07]\g00,49",0 -msg_ok2 db "\h70 [\c02 Ok \c07]\l",0 -msg_echec2 db "\h70 [\c0CPasser\c07]\l",0 - - -exporting -declare biosprinth -declare biosprint -declare mbinit -declare mbcreate -declare mbfree -declare mbclean -declare mbresident -declare mbnonresident -declare mbchown -declare mballoc -declare mbfind -declare mbfindsb -declare mbget -declare mbloadfuncs -declare mbsearchfunc -declare bioswaitkey -declare mbloadsection -declare enableirq -declare enableirq -declare readimr -declare readirr -declare readisr -declare seteoi -declare enablea20 -declare disablea20 -declare flatmode -declare installirqhandler -declare irqhandler -declare isenableirq -declare isrequestirq -declare isinserviceirq -declare savecontext -declare restorecontextg -ende - - -importing -use VIDEO,setvideomode -use VIDEO,clearscreen -use VIDEO.LIB,print -use DETECT.LIB,cpuinfo -use DETECT.LIB,setinfo -use DETECT.LIB,pciinfo -use DETECT.LIB,getcardinfo -use DETECT.LIB,getpcisubclass -use DETECT.LIB,getpciclass -use DETECT.LIB,detectvmware -use DISQUE,initdrive -use DISQUE,projfile -use DISQUE,execfile -endi - -include "mcb.asm" -include "8259a.asm" - -section: -dw offset mb0 -dw offset mb1-offset mb0 -db "SYSTEME",0 - -dw offset mb1 -dw offset mb2-offset mb1 -db "VIDEO",0 - -dw offset mb2 -dw offset mb3-offset mb2 -db "VIDEO.LIB",0 - -dw offset mb3 -dw offset mb4-offset mb3 -db "DETECT.LIB",0 - -dw offset mb4 -dw offset mb5-offset mb4 -db "DISQUE",0 - -dd 0 - -mb1: -includebin "video.sys" -mb2: -includebin "..\lib\video.lib" -mb3: -includebin "..\lib\detect.lib" -mb4: -includebin "disque.sys" -mb5: - - - - diff --git a/noyau/systeme.ini b/noyau/systeme.ini deleted file mode 100644 index fe574b7..0000000 --- a/noyau/systeme.ini +++ /dev/null @@ -1,9 +0,0 @@ -mcb.sys(49) -video.sys(47) -horloge.sys(8) -8259a.sys(50) -disque.sys(48) -souris.sys(74) -heure.sys(8) -clavier.sys(9) -port.sys(D) \ No newline at end of file diff --git a/noyau/video.asm b/noyau/video.asm deleted file mode 100644 index e8b6f68..0000000 --- a/noyau/video.asm +++ /dev/null @@ -1,1352 +0,0 @@ -model tiny,stdcall -p486 -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\graphic.h" - -org 0h - -header exe <"CE",1,0,0,offset exports,offset imports,,> - -exporting -declare setvideomode -declare getvideomode -declare clearscreen -declare setfont -declare loadfont -declare getfont -declare addline -declare showchars -declare showpixel -declare getpixel -declare setstyle -declare getstyle -declare enablecursor -declare disablecursor -declare setcolor -declare getcolor -declare scrolldown -declare getxy -declare setxy -declare savescreen -declare restorescreen -declare page2to1 -declare page1to2 -declare xchgpages -declare waithretrace -declare waitretrace -declare getvideoinfos -declare savedac -declare restoredac -declare savestate -declare restorestate -declare enablescroll -declare disablescroll -declare getchars -declare savescreen -declare savescreento -declare saveparamto -declare restoreparamfrom -declare restorescreen -declare restorescreenfrom -declare page2to1 -declare page1to2 -declare xchgpages -declare savestate -declare restorestate -declare savestate -declare restoredacfrom -declare restoredac -declare savedacto -ende - -importing -use SYSTEME,mbcreate -use SYSTEME,mbfindsb -use SYSTEME,mbfree -use SYSTEME,mbchown -endi - -;================================Table des modes videos (64 BYTES) ============================================ -;40*25 16 couleurs -mode0 DB 67H,00H, 03H,08H,03H,00H,02H - DB 2DH,27H,28H,90H,2BH,0A0H,0BFH,01FH,00H,4FH,0DH,0EH,00H,00H,00H,00H - DB 9CH,8EH,8FH,14H,1FH,96H,0B9H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,08H,00H - DB 40,25 - -;80*25 16 couleurs -mode1 DB 67H,00H, 03H,00H,03H,00H,02H - DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,4FH,0DH,0EH,00H,00H,00H,00H - DB 9CH,0EH,8FH,28H,1FH,96H,0B9H,0A3h,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,38H,39H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,08H,00H - DB 80,25 - -;80*50 16 couleurs -mode2 DB 63H, 00H, 03H,01H,03H,01H,02H - DB 5FH,4FH,50H,82H,55H,81H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H - DB 00H,9CH,8EH,8FH,28H,1FH,96H,0B9H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,00H,00H - DB 80,50 - -;100*50 16 couleurs -mode3 DB 067H,00H,03H,01H,03H,01H,02H - DB 70H,63H,64H,85H,68H,84H,0BFH,1FH,00H,47H,06H,07H,00H,00H,00H - DB 00H,9Ch,08EH,8FH,32H,1FH,96H,0B9H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,00H,00H - DB 100,50 - -;100*60 16 couleurs -mode4 DB 0A7H,00H,03H,01H,03H,01H,02H - DB 70H,63H,64H,85H,68H,84H,0FFH,1FH,00H,47H,06H,07H,00H,00H,00H - DB 00H,0E7H,8EH,0DFH,32H,1FH,0DFH,0E5H,0A3H,0FFH - DB 00H,00H,00H,00H,00H,10H,0EH,00H,0FFH - DB 00H,01H,02H,03H,04H,05H,14H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH - DB 0CH,00H,0FH,00H,00H - DB 100,60 - -;320*200 256 couleurs -mode5 DB 63H, 00H, 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,41H,00H,00H,00H,00H,00H,00H - DB 9CH,0EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 40,25 - -;320*400 256 couleurs -mode6 DB 063H, 00H, 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,54H,80H,0BFH,1FH,00H,40H,00H,00H,00H,00H,00H,00H - DB 9CH,8EH,8FH,28H,00H,96H,0B9H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 40,50 - -;320*480 256 couleurs -mode7 DB 0E3H, 00H, 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,54H,80H,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,00H - DB 0EAH,0ACH,0DFH,28H,00H,0E7H,06H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04h,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 40,60 - -;360*480 256 couleurs -mode8 DB 0E7H, 00H, 03H,01H,0FH,00H,06H - DB 6BH,59H,5AH,8EH,5EH,8AH,0DH,3EH,00H,40H,00H,00H,00H,00H,00H,00H - DB 0EAH,0ACH,0DFH,2DH,00H,0E7H,06H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04h,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 45,60 - -;400*600 256 couleurs -mode9 DB 0E7H, 00H, 03H,01H,0FH,00H,06H - DB 74h,63h,64h,97h,68h,95h,86h,0F0h,00h,60h,00h,00h,00h,00h,00h,00h - DB 5Bh,8Dh,57h,32h,00h,60h,80h,0E3h,0FFh - DB 00H,00H,00H,00H,00H,40H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04h,05H,06H,07H,08H,09H,0AH,0BH,0CH,0DH,0EH,0FH - DB 41H,00H,0FH,00H,00H - DB 50,75 - -;640*480 16 couleurs -mode10 DB 0E3H - DB 00H - DB 03H,01H,0FH,00H,06H - DB 5FH,4FH,50H,82H,53H,9FH,0BH,3EH,00H,40H,00H,00H,00H,00H,00H,00H,0E9H,8BH,0DFH,28H,00H,0E7H,04H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH,01H,00H,0FH,00H,00H - DB 80,60 - -;800*600 16 couleurs -mode11 DB 0E7H - DB 00H - DB 03H,01H,0FH,00H,06H - DB 70H,63H,64H,92H,65H,82H,70H,0F0H,00H,60H,00H,00H,00H,00H,00H,00H,5BH,8CH,57H,32H,00H,58H,70H,0E3H,0FFH - DB 00H,00H,00H,00H,00H,00H,05H,0FH,0FFH - DB 00H,01H,02H,03H,04H,05H,06H,07H,10H,11H,3AH,3BH,3CH,3DH,3EH,3FH,01H,00H,0FH,00H,00H - DB 100,75 - -;============================================DATABLOCK========================================================= -datablock vgainf <0,0,0,0,0,7,0FFh,0,0,0,0,0,0,0,0,0,0,0,1> - -;=======================================Equivalence pour la clarté du code======================================== -sequencer equ 03C4h -misc equ 03C2h -ccrt equ 03D4h -attribs equ 03C0h -graphics equ 03CEh -statut equ 03DAh - -maxmode equ 11 -planesize equ 65000 -;============================================Fonctions de l'int VIDEO=========================================== - - -;=============ENABLESCROLLING========= -;Autorise le défilement -;-> -;<- -;===================================== -PROC enablescroll FAR - mov [cs:datablock.scrolling],1 - ret -endp enablescroll - -;=============DISABLESCROLLING========= -;Désactive le d‚filement -;-> -;<- -;====================================== -PROC disablescroll FAR - mov [cs:datablock.scrolling],0 - ret -endp disablescroll - -;=============ENABLECURSOR============= -;Autorise le d‚filement -;-> -;<- -;====================================== -PROC enablecursor FAR - USES ax,dx - mov [cs:datablock.cursor],1 - mov dx,ccrt - mov al,0Ah - out dx,al - inc dx - in al,dx - and al,11011111b - mov ah,al - dec dx - mov al,0Ah - out dx,ax - mov al,[cs:datablock.x] - xor ah,ah - mov dl,[cs:datablock.y] - xor dh,dh - call setxy,ax,dx - ret -endp enablecursor - -;=============DISABLECURSOR============= -;D‚sactive le d‚filement -;-> -;<- -;======================================= -PROC disablecursor FAR - USES ax,dx - mov [cs:datablock.cursor],0 - mov dx,ccrt - mov al,0Ah - out dx,al - inc dx - in al,dx - or al,00100000b - mov ah,al - dec dx - mov al,0Ah - out dx,ax - ret -endp disablecursor - -;==========SETSTYLE========= -;Change le style du texte a %0 -;-> %0 style -;<- -;============================ -PROC setstyle FAR - ARG @style:word - USES cx - mov ax,[@style] - mov [cs:datablock.style],al - ret -endp setstyle - -;==========GETSTYLE========= -;Récupère le style du texte dans AX -;-> -;<- AX style -;=========================== -PROC getstyle FAR - mov al,[cs:datablock.style] - xor ah,ah - ret -endp getstyle - -;=============SetVideoMode========= -;Fixe le mode vidéo courant a %0 -;-> %0 mode d'écran -;<- Carry if error -;================================== -PROC setvideomode FAR - ARG @mode:word - USES ax,cx,dx,di - mov ax,[@mode] - xor ah,ah - cmp al,maxmode - ja @@errorsetvideomode - cmp [cs:datablock.mode],5h - jb @@nographic - cmp al,5h - jae @@nographic - call initfont -@@nographic: - cmp [cs:datablock.mode],0FFh - jne @@noinit - call initfont -@@noinit: - mov [cs:datablock.mode],al - xor ah,ah - mov di,ax - shl di,6 - add di,offset mode0 - mov dx,misc - mov al,[cs:di] - out dx,al - inc di - mov dx,statut - mov al,[cs:di] - out dx,al - inc di - mov dx,sequencer - xor ax,ax -@@initsequencer: - mov ah,[cs:di] - out dx,ax - inc al - inc di - cmp al,4 - jbe @@initsequencer - mov ax,0E11h - mov dx,ccrt - out dx,ax - xor ax,ax -@@initcrt: - mov ah,[cs:di] - out dx,ax - inc al - inc di - cmp al,24 - jbe @@initcrt - mov dx,graphics - xor ax,ax -@@initgraphic: - mov ah,[cs:di] - out dx,ax - inc al - inc di - cmp al,8 - jbe @@initgraphic - mov dx,statut - in al,dx - mov dx,attribs - xor ax,ax -@@initattribs: - mov ah,[cs:di] - push ax - in ax,dx - pop ax - out dx,al - xchg ah,al - out dx,al - xchg ah,al - inc al - inc di - cmp al,20 - jbe @@initattribs - mov al,20h - out dx,al - mov al,[cs:di] - mov [cs:datablock.columns],al - mov ah,[cs:di+1] - mov [cs:datablock.lines],ah - mul ah - mov cl,[cs:di-5] - and cl,01000000b - cmp cl,0 - je @@colors16 - mov [cs:datablock.color],8 - mov cl,4 - jmp @@colors256 -@@colors16: - mov [cs:datablock.color],4 - mov cl,3 -@@colors256: - cmp [cs:datablock.mode],5 - setae [cs:datablock.graphic] - jb @@istext - shl ax,cl - mov [cs:datablock.segments],0A000h - jmp @@wasgraph -@@istext: - mov [cs:datablock.segments],0B800h - shl ax,1 -@@wasgraph: - mov [cs:datablock.pagesize],ax - mov ax,planesize - xor dx,dx - div [cs:datablock.pagesize] - mov [cs:datablock.nbpage],al - mov al,[cs:di-36] - xor ah,ah - shl ax,2 - mov cl,[cs:datablock.graphic] - shr ax,cl - mov [cs:datablock.linesize],ax - mov ax,[cs:di-43] - mov [cs:datablock.adress],ax - mov [cs:datablock.base],ax - mov [cs:datablock.cursor],1 - mov [cs:datablock.style],0 - ret -@@errorsetvideomode: - ret -endp setvideomode - - -initfont: - push ds - call clearscreen - push cs - pop ds - call loadfont,offset font8x8,8,1 - call loadfont,offset font8x16,16,0 - pop ds - ret - -;=============GetVideoMode========= -;Renvoie le mode vidéo courant dans AX -;-> -;<- AX -;================================== -PROC getvideomode FAR - mov al,[cs:datablock.mode] - xor ah,ah - ret -endp getvideomode - -;=============CLEARSCREEN========= -;Efface l'ecran graphique ou texte -;-> -;<- -;================================= -PROC clearscreen FAR - USES eax,cx,dx,di,es - mov cx,planesize - mov di,[cs:datablock.adress] - shr cx,2 - cmp [cs:datablock.graphic],1 - jne @@erasetext - mov ax,0A000h - mov es,ax -@@erasegraph: - mov ax,0F02h - mov dx,sequencer - out dx,ax - mov ax,0205h - mov dx,graphics - out dx,ax - mov ax,0003h - out dx,ax - mov ax,0FF08h - out dx,ax - mov eax,00000000h - cld - rep stosd - mov ax,0005h - cmp [cs:datablock.color],4 - je @@not256 - mov ax,4005h -@@not256: - mov dx,graphics - out dx,ax - mov ax,0003h - out dx,ax - jmp @@endoferase -@@erasetext: - mov ax,0B800h - mov es,ax - mov eax,07200720h - cld - rep stosd -@@endoferase: - call setxy,0,0 - ret -endp clearscreen - - -;=============SetFont========= -;Active la font %0 parmi les 8 -;-> %0 n° font -;<- Carry if error -;============================= -PROC setfont FAR - ARG @font:word - USES ax,cx,dx - mov cx,[@font] - xor ch,ch - cmp cl,7 - ja @@errorsetfont - mov [cs:datablock.font],cl - mov ah,cl - and cl,11b - and ah,0100b - shl ah,2 - add ah,cl - mov dx,sequencer - mov al,3 - out dx,ax - ret -@@errorsetfont: - ret -endp setfont - -;=============GetFont========= -;Récupère le n° de la font active AX -;-> -;<- CL n° font, Carry if error -;============================= -PROC getfont FAR - mov al,[cs:datablock.font] - xor ah,ah -endp getfont - -;!!!!!!!!!!!!!!!!!!!! a remettre les anciens params de timing depuis origine -;=============LoadFont======== -;Charge une police pointée par %0 dans la carte vidéo sous n°font %1, taille police dans %2 -;-> %0 n°font, %1 pointeur vers Font, %2 taille police -;<- Carry if error -;============================= -PROC loadfont FAR - ARG @pointer:word,@size:word,@font:word - USES ax,bx,cx,dx,si,di,es - mov si,[@pointer] - mov cx,[@size] - mov bx,[@font] - cmp bl,7 - ja @@errorloadfont - xor di,di - cli - mov dx,sequencer -@@doseq: - mov ax,[cs:di+offset reg1] - out dx,ax - inc di - inc di - cmp di,6 - jbe @@doseq - mov dx,graphics -@@doseq2: - mov ax,[cs:di+offset reg1] - out dx,ax - inc di - inc di - cmp di,6+6 - jbe @@doseq2 - sti - mov ax,0A000h - mov es,ax - mov dx,256 - mov al,0 - xor bh,bh - cmp bl,4 - jb @@isless - sub bl,4 - shl bl,1 - inc bl - jmp @@okmake -@@isless: - shl bl,1 -@@okmake: - mov di,bx - shl di,13 - mov bh,cl - mov bl,cl - sub bl,32 - neg bl - xor cx,cx - cld -@@popz: - mov cl,bh - rep movsb - mov cl,bl - rep stosb - dec dx - jnz @@popz - xor di,di - mov dx,sequencer -@@doseqs: - mov ax,[cs:di+offset reg2] - out dx,ax - inc di - inc di - cmp di,6 - jbe @@doseqs - mov dx,graphics -@@doseqs2: - mov ax,[cs:di+offset reg2] - out dx,ax - inc di - inc di - cmp di,6+6 - jbe @@doseqs2 - ret -@@errorloadfont: - stc - ret - -reg2 dw 0100h, 0302h, 0304h, 0300h - dw 0004h, 1005h, 0E06h -reg1 dw 0100h, 0402h, 0704h, 0300h - dw 0204h, 0005h, 0406h -endp loadfont - -;==========SHOWLINE=============== -;remet le curseur text a la ligne avec un retour chariot -;-> -;<- -;================================= -PROC addline FAR - USES bx,cx - mov bl,[cs:datablock.y] - xor bh,bh - mov cl,[cs:datablock.lines] - sub cl,2 - cmp bl,cl - jne @@scro - dec bl - mov cx,1 - cmp [cs:datablock.graphic],0 - je @@okscro - mov cx,8 -@@okscro: - call scrolldown,cx -@@scro: - inc bl - call setxy,0,bx - ret -endp addline - -;==========SETCOLOR========= -;Change les attributs du texte a CL -;-> %0 couleur -;<- -;=========================== -PROC setcolor FAR - ARG @color:word - USES cx - mov cx,[@color] - mov [cs:datablock.colors],cl - ret -endp setcolor - -;==========GETCOLOR========= -;Récupère les attributs du texte dans AX -;-> -;<- AX couleur -;=========================== -PROC getcolor FAR - mov al,[cs:datablock.colors] - xor ah,ah - ret -endp getcolor - -;==========SCROLLDOWN========= -;defile de %0 lines vers le bas -;-> %0 lines à défiler vers le bas -;<- -;============================= -PROC scrolldown FAR - ARG @line:word - USES ax,cx,dx,si,di,ds,es - cmp [cs:datablock.scrolling],0 - je @@graphp - mov ax,[@line] - mul [cs:datablock.linesize] - mov si,ax - mov cx,[cs:datablock.pagesize] - sub cx,si - mov di,[cs:datablock.adress] - cld - cmp [cs:datablock.graphic],1 - jne @@textp - mov ax,0A000h - mov es,ax - mov ds,ax - mov ax,0F02h - mov dx,sequencer - out dx,ax - mov ax,0105h - mov dx,graphics - out dx,ax - cld - rep movsb - mov ax,0005h - cmp [cs:datablock.color],4 - je @@not256ok - mov ax,4005h -@@not256ok: - mov dx,graphics - out dx,ax - mov ax,0003h - out dx,ax - jmp @@graphp - -@@textp: - mov ax,0B800h - mov es,ax - mov ds,ax - rep movsb -@@graphp: - ret -endp scrolldown - -;==========GETXY========= -;Met les coordonnées du curseur dans ah,al au format point -;-> -;<- ah coordonnées x, al coordonnées y -;======================== -PROC getxy FAR - USES bx - mov ah,[cs:datablock.x] - mov al,[cs:datablock.y] - ret -endp getxy - -;==========SETXY========= -;Change les coordonnées du curseur a X:%0,Y:%1 -;-> %0 coordonnées x, %1 coordonnées y -;<- -;======================== -PROC setxy FAR - ARG @x:word,@y:word - USES ax,bx,dx,di - mov ax,[@y] - mov bx,[@x] - mov [cs:datablock.x],bl - mov [cs:datablock.y],al - mov di,[cs:datablock.adress] - add di,bx - mul [cs:datablock.columns] - add di,ax - shl di,1 - mov [cs:datablock.xy],di - call setcursor - ret -endp setxy - -;==========SHOWPIXEL========= -;Affiche un pixel de couleur AL en X:%0,Y:%1 -;-> %0 coordonnées x, %1 coordonnées y, %2 couleur -;<- -;============================ -PROC showpixel FAR - ARG @x:word,@y:word,@color:word - USES ax,bx,cx,dx,si,di,es - mov bx,[@x] - mov cx,[@y] - mov ax,[@color] - cmp [cs:datablock.color],4 - je @@showpixel4 - mov si,ax - mov ax,cx - mov cl,bl - mul [cs:datablock.linesize] - shr bx,2 - add ax,bx - mov di,ax - add di,[cs:datablock.adress] - and cl,3 - mov ah,1 - shl ah,cl - mov al,2 - mov dx,sequencer - out dx,ax - mov bx,0A000h - mov es,bx - mov ax,si - mov [es:di],al - jmp @@endofshow - -@@showpixel4: - mov dx,ax - mov ax,cx - mov ch,dl - mov cl,bl - mul [cs:datablock.linesize] - shr bx,3 - add ax,bx - mov di,ax - add di,[cs:datablock.adress] - and cl,111b - xor cl,111b - mov ah,1 - shl ah,cl - mov al,8 - mov dx,graphics ;masque - out dx,ax - mov ax,0205h - out dx,ax - mov ax,0003h - out dx,ax - mov bx,0A000h - mov es,bx - mov al,[es:di] - mov [es:di],ch -@@endofshow: - ret -endp showpixel - -;!!!!!!!!!!!!!! gerer le mode chain 4 -;==========GETPIXEL========= -;Récupère en ax la couleur du pixel de coordonnées X:%0,Y:%1 -;-> %0 coordonnées x, %1 coordonnées y -;<- AX couleur -;========================================= -PROC getpixel FAR - ARG @x:word,@y:word - USES ax,bx,cx,dx,di,es - mov bx,[@x] - mov cx,[@y] - mov ax,cx - mov cl,bl - mul [cs:datablock.linesize] - shr bx,2 - add ax,bx - mov di,ax - add di,[cs:datablock.adress] - and cl,3 - mov ah,cl - mov al,4 - mov dx,graphics - out dx,ax - mov bx,0A000h - mov es,bx - mov al,[es:di] - ret -endp getpixel - -;==========GETVGAINFO========= -;Renvoie un bloc de donnée en ES:DI sur l'état de la carte graphique -;<- ES:%0 pointeur -;-> -;============================================= -PROC getvideoinfos FAR - ARG @pointer:word - USES cx,si,di,ds - push cs - pop ds - mov cx,size datablock - mov si,offset datablock - mov di,[@pointer] - cld - rep movsb - ret -endp getvideoinfos - -;==========WAITRETRACE========= -;Synchronisation avec la retrace verticale -;<- -;-> -;============================== -PROC waitretrace FAR - USES ax,dx - mov dx,3DAh -@@waitr: - in al,dx - test al,8 - jz @@waitr - ret -endp waitretrace - -;==========WAITHRETRACE========= -;Synchronisation avec la retrace horizontale -;<- -;-> -;=============================== -PROC waithretrace FAR - USES ax,dx - mov dx,3DAh -@@waitr: - in al,dx - test al,1 - jz @@waitr - ret -endp waithretrace - -;==========GETCHAR========= -;Renvoie en AX le caractère sur le curseur -;<- -;-> -;========================== -PROC getchars FAR - USES di,es - mov ax,0B800h - mov es,ax - mov di,[cs:datablock.xy] - mov al,[es:di] - xor ah,ah - ret -endp getchars - -;==========SHOWCHAR========= -;Ecrit le caractère ASCII %0 attribut %1 aprés le curseur, en le mettant à jours -;<- -;-> -;=========================== -PROC showchars FAR - ARG @char:word,@attr:word - USES ax,bx,cx,dx,di,es - mov cl,[byte ptr @char] - mov ch,[byte ptr @attr] - cmp [@attr],0FFFFh - jne @@notlastattr - mov ch,[cs:datablock.colors] -@@notlastattr: - cmp [cs:datablock.graphic],1 - jne @@textaccess - call emulatechar - jmp @@adjusttext -@@textaccess: - mov ax,0B800h - mov es,ax - mov di,[cs:datablock.xy] - mov [es:di],cx - add [cs:datablock.xy],2 -@@adjusttext: - inc [cs:datablock.x] - mov cl,[cs:datablock.columns] - cmp [cs:datablock.x],cl - jb @@noadjusted - call addline -@@noadjusted: - call setcursor - ret -endp showchars - -setcursor: - push ax cx dx - cmp [cs:datablock.cursor],1 - jne notshow - mov dx,ccrt - mov al,0Eh - mov cx,[cs:datablock.xy] - shr cx,1 - mov ah,ch - out dx,ax - mov ah,cl - inc al - out dx,ax -notshow: - pop dx cx ax - ret - - -;Ecrit le caractère ASCII CL attribut CH aprés le curseur graphique, en le mettant à jours en mode graphique -emulatechar: - push ax bx cx dx di - mov al,ch - mov di,cx - and di,11111111b - shl di,3 - add di,offset font8x8 - mov bl,[cs:datablock.x] - mov cl,[cs:datablock.y] - xor bh,bh - xor ch,ch - shl bx,3 - shl cx,3 - mov ah,[cs:di] - xor dx,dx -bouclet: - rol ah,1 - push ax - jc colored - shr al,4 - cmp [cs:datablock.style],0 - jnz transparent -colored: - and ax,1111b - call showpixel,bx,cx,ax -transparent: - pop ax - inc bx - inc dl - cmp dl,8 - jb bouclet - inc di - mov ah,[cs:di] - xor dl,dl - sub bx,8 - inc cx - inc dh - cmp dh,8 - jb bouclet -ended: - pop di dx cx bx ax - ret - -;sauve l'ecran dans un bloc de mémoire -PROC savescreen FAR -USES ax,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbcreate],offset data3,[cs:datablock.pagesize] -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call savescreento,0 -clc -ret -@@error: -stc -ret -endp savescreen -data3 db '/vgascreen',0 - - -;===================================sauve l'ecran rapidement en ds:%1================ -PROC savescreento FAR - ARG @offset:word - USES ecx,si,di,ds,es - push ds - pop es - mov cx,0B800h - mov ds,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - mov di,[@offset] - shr cx,2 - xor si,si - cld - rep movsd - ret -endp savescreento - -;===================================sauve les parametres en ds:%0================ -PROC saveparamto FAR - ARG @offset:word - USES ecx,si,di,ds,es - push ds - pop es - push cs - pop ds - xor ecx,ecx - mov cx,size datablock - mov di,[@offset] - mov si,offset datablock - cld - rep movsb - ret -endp saveparamto - -;===================================restore les parametres depuis en ds:%0================ -PROC restoreparamfrom FAR - ARG @offset:word - USES ecx,si,di,es - push cs - pop es - xor ecx,ecx - mov cx,size datablock - mov si,[@offset] - call setvideomode,[word ptr (vgainf si).mode] - mov di,offset datablock - cld - rep movsb - ret -endp restoreparamfrom - - - - - - - -;restaure l'ecran dans un bloc de mémoire -PROC restorescreen FAR -USES ax,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbfindsb],offset data3,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call restorescreenfrom,0 -clc -ret -@@error: -stc -ret -endp restorescreen - - -;===================================restaure l'ecran rapidement en %1================ -PROC restorescreenfrom FAR - ARG @offset:word - USES ecx,si,di,es - mov cx,0B800h - mov es,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - mov si,[@offset] - shr cx,2 - xor di,di - cld - rep movsd - ret -endp restorescreenfrom - - - - -;===============================Page2to1============================ - -PROC page2to1 FAR - USES ecx,si,di,ds,es - mov cx,0B800H - mov es,cx - mov ds,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - shr cx,2 - mov si,[cs:datablock.pagesize] - xor di,di - cld - rep movsd - ret -endp page2to1 - -;===============================Page1to2============================ -PROC page1to2 FAR - USES ecx,si,di,ds,es - mov cx,0B800H - mov es,cx - mov ds,cx - xor ecx,ecx - mov cx,[cs:datablock.pagesize] - shr cx,2 - mov di,[cs:datablock.pagesize] - xor si,si - cld - rep movsd - ret -endp page1to2 -;===============================xchgPages============================ -PROC xchgpages FAR - USES ax,ecx,si,di,ds,es,bp -mov bp,sp -push cs -pop ds -call [cs:mbcreate],offset data4,[cs:datablock.pagesize] -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+18] -jc @@error -push ax -pop ds -call savescreento,0 -call page2to1 -xor si,si -mov cx,0B800H -mov es,cx -mov di,[cs:datablock.pagesize] -xor ecx,ecx -mov cx,[cs:datablock.pagesize] -shr cx,2 -cld -rep movsd -call [cs:mbfree],ax -clc -ret -@@error: -stc -ret -endp xchgpages - -data4 db '/vgatemp',0 - - - - - -;Sauve l'‚tat de la carte dans un bloc mémoire -PROC savestate FAR -USES ax,cx,di,ds,bp -mov bp,sp -mov cx,size datablock -add cx,[cs:datablock.pagesize] -add cx,3*256 -push cs -pop ds -call [cs:mbcreate],offset data,cx -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+12] -jc @@error -push ax -pop ds -xor di,di -call saveparamto,di -add di,size datablock -call savescreento,di -add di,[cs:datablock.pagesize] -call savedacto,di -clc -ret -@@error: -stc -ret -endp savestate - -data db '/vga',0 - - - - -;R‚cupŠre l'‚tat de la carte depuis son bloc mémoire -PROC restorestate FAR -USES ax,cx,di,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbfindsb],offset data,[word ptr ss:bp+12] -jc @@error -push ax -pop ds -xor di,di -call restoreparamfrom,di -add di,size datablock -call restorescreenfrom,di -add di,[cs:datablock.pagesize] -call restoredacfrom,di -clc -ret -@@error: -stc -ret -endp restorestate - - -;sauve le DAC dans un bloc de mémoire -PROC savedac FAR -USES ax,ds,bp -mov bp,sp -push cs -pop ds -call [cs:mbcreate],offset data3,3*256 -jc @@error -call [cs:mbchown],ax,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call savedacto,0 -clc -ret -@@error: -stc -ret -endp savedac - -data2 db '/vgadac',0 - - - -;R‚cupŠre le dac depuis son bloc mémoire -PROC restoredac FAR -USES ax,ds,bp -mov bp,sp -call [cs:mbfindsb],offset data2,[word ptr ss:bp+8] -jc @@error -push ax -pop ds -call restoredacfrom,0 -clc -ret -@@error: -stc -ret -endp restoredac - - - -;sauve le DAC en ds:%0 -PROC savedacto FAR -ARG @offset:word -USES ax,cx,dx,di -mov di,[@offset] -mov dx,3C7h -mov cx,256 -@@save: -mov al,cl -dec al -out dx,al -inc dx -inc dx -in al,dx -mov [ds:di],al -inc di -in al,dx -mov [ds:di],al -inc di -in al,dx -mov [ds:di],al -inc di -dec dx -dec dx -dec cx -jne @@save -ret -endp savedacto - -;restore le DAC depuis ds:si -PROC restoredacfrom FAR -ARG @offset:word -USES ax,cx,dx,si -mov si,[@offset] -xor ax,ax -mov dx,3C8h -mov cx,256 -@@save2: -mov al,cl -dec al -out dx,al -inc dx -mov al,[ds:si] -inc si -out dx,al -mov al,[ds:si] -inc si -out dx,al -mov al,[ds:si] -inc si -out dx,al -dec dx -dec cx -jne @@save2 -ret -endp restoredacfrom - - - -font8x8: -include "..\include\pol8x8.inc" -font8x16: -include "..\include\pol8x16.inc" - - diff --git a/outils/CE explorer/icone.ico b/outils/CE explorer/icone.ico deleted file mode 100644 index 369777c..0000000 Binary files a/outils/CE explorer/icone.ico and /dev/null differ diff --git a/outils/CE explorer/imgs.bmp b/outils/CE explorer/imgs.bmp deleted file mode 100644 index 9896f7d..0000000 Binary files a/outils/CE explorer/imgs.bmp and /dev/null differ diff --git a/outils/CE explorer/project1.bpr b/outils/CE explorer/project1.bpr deleted file mode 100644 index 8011eea..0000000 --- a/outils/CE explorer/project1.bpr +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -[Version Info] -IncludeVerInfo=1 -AutoIncBuild=1 -MajorVer=1 -MinorVer=0 -Release=0 -Build=0 -Debug=0 -PreRelease=0 -Special=0 -Private=0 -DLL=0 -Locale=1036 -CodePage=1252 - -[Version Info Keys] -CompanyName=COS2000 -FileDescription=Cos2000 lib explorer -FileVersion=1.0.0.0 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName=Cos2000 lib explorer -ProductVersion=1.0.0.0 -Comments=FOR CE ONLY - -[Excluded Packages] -..\lib\DragDrop_B5.bpl=(untitled) -..\lib\Moje_B5.bpl=(untitled) -..\lib\DriveDir_B5.bpl=(untitled) -..\lib\tb2k_cb6.bpl=(untitled) -..\lib\tb2kdsgn_cb6.bpl=(untitled) -..\lib\tbx_cb6.bpl=(untitled) -..\lib\tbxdsgn_cb6.bpl=(untitled) -d:\cbuilder6\Bin\dclite60.bpl=Borland Integrated Translation Environment - -[HistoryLists\hlIncludePath] -Count=1 -Item0=D:\CBuilder6\Bin;C:\Documents and Settings\admin\Bureau\perso\cos\CE explorer;$(BCB)\include;$(BCB)\include\vcl - -[HistoryLists\hlLibraryPath] -Count=1 -Item0=D:\CBuilder6\Bin;C:\Documents and Settings\admin\Bureau\perso\cos\CE explorer;$(BCB)\Projects\Lib;$(BCB)\lib\obj;$(BCB)\lib - -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=$(BCB)\source\vcl - -[Debugging] -DebugSourceDirs=$(BCB)\source\vcl - -[Parameters] -RunParams= -Launcher= -UseLauncher=0 -DebugCWD= -HostApplication= -RemoteHost= -RemotePath= -RemoteLauncher= -RemoteCWD= -RemoteDebug=0 - -[Compiler] -ShowInfoMsgs=0 -LinkDebugVcl=0 -LinkCGLIB=0 - -[CORBA] -AddServerUnit=1 -AddClientUnit=1 -PrecompiledHeaders=1 - - \ No newline at end of file diff --git a/outils/CE explorer/project1.cpp b/outils/CE explorer/project1.cpp deleted file mode 100644 index b6c7655..0000000 --- a/outils/CE explorer/project1.cpp +++ /dev/null @@ -1,34 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#pragma hdrstop -//--------------------------------------------------------------------------- -USEFORM("Unit1.cpp", Form1); -//--------------------------------------------------------------------------- -WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) -{ - try - { - Application->Initialize(); - Application->Title = "CE explorer"; - Application->CreateForm(__classid(TForm1), &Form1); - Application->Run(); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - catch (...) - { - try - { - throw Exception(""); - } - catch (Exception &exception) - { - Application->ShowException(&exception); - } - } - return 0; -} -//--------------------------------------------------------------------------- diff --git a/outils/CE explorer/project1.res b/outils/CE explorer/project1.res deleted file mode 100644 index e48ea54..0000000 Binary files a/outils/CE explorer/project1.res and /dev/null differ diff --git a/outils/CE explorer/project1.tds b/outils/CE explorer/project1.tds deleted file mode 100644 index 5a0a715..0000000 Binary files a/outils/CE explorer/project1.tds and /dev/null differ diff --git a/outils/CE explorer/unit1.cpp b/outils/CE explorer/unit1.cpp deleted file mode 100644 index 634595b..0000000 --- a/outils/CE explorer/unit1.cpp +++ /dev/null @@ -1,273 +0,0 @@ -//--------------------------------------------------------------------------- - -#include -#include -#include -#pragma hdrstop - -#include "Unit1.h" -//--------------------------------------------------------------------------- -#pragma package(smart_init) -#pragma resource "*.dfm" -TForm1 *Form1; -//--------------------------------------------------------------------------- -__fastcall TForm1::TForm1(TComponent* Owner) - : TForm(Owner) -{ -} -//--------------------------------------------------------------------------- -tree(AnsiString file,int offset,TTreeNode* rootnode) -{ -FILE* in; -#pragma option -a1 -struct CE { -char checks[2]; -unsigned char major; -unsigned int checksum; -unsigned char compressed; -unsigned short exports; -unsigned short imports; -unsigned short sections; -unsigned short starting; -} myce; -#pragma option -a - -long pointeur=0; - -if ((in = fopen(file.c_str(), "rb"))!= NULL) -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&myce, sizeof(myce), 1, in); -TTreeNode* currentnode; -TTreeNode* subcurrentnode; -TTreeNode* subsubcurrentnode; -if (offset==0) -{ -fseek(in, 0L, SEEK_END); -Form1->TreeView->Items->AddChild(rootnode,"Adresse réelle: 0x0000")->ImageIndex=31; -Form1->TreeView->Items->AddChild(rootnode,"Adresse : 0x0000")->ImageIndex=31; -} -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Entête"); -currentnode->ImageIndex=10; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -if (AnsiString(myce.checks,2)!="CE") -{ -rootnode->ImageIndex=4; -Form1->TreeView->Items->AddChild(currentnode,"Type : ceci n'est pas un fichier CE")->ImageIndex=1; -} -else -{ -rootnode->ImageIndex=2; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Type : "+AnsiString(myce.checks,2)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)0+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)0,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Version : "+IntToStr(myce.major)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)2+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)2,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0001")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Checksum : 0x"+IntToHex((int)myce.checksum,8)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)3+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)3,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0004")->ImageIndex=31; -if (myce.compressed>=1) -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Fichier compressé avec RIP"); -else -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Fichier sans compression"); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)7+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)7,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0001")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Pointeur exportation : 0x"+IntToHex(myce.exports,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)8+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)8,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Pointeur Importation : 0x"+IntToHex(myce.imports,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)10+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)10,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Pointeur sections : 0x"+IntToHex(myce.sections,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)12+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)12,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -subcurrentnode=Form1->TreeView->Items->AddChild(currentnode,"Point d'entrée : 0x"+IntToHex(myce.starting,4)); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex((int)14+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex((int)14,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille: 0x0002")->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x0010")->ImageIndex=31; - -char imported[30]; -AnsiString imports[30]={""}; -AnsiString exports[30]={""}; -AnsiString sections[30]={""}; -unsigned short iaddrs[30]={0}; -unsigned short eaddrs[30]={0}; -unsigned short saddrs[30]={0}; -unsigned short ssize[30]={0}; -AnsiString libraries[30]={""}; -AnsiString alib; -int i=0; -pointeur=myce.imports; -int nblib=0; -int nbimp=0; - -if (myce.imports!=0) -{ -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Importations"); -currentnode->ImageIndex=14; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -do -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&imported, sizeof(imported), 1, in); -imports[i]=AnsiString((char*)&imported); -iaddrs[i]=pointeur; -pointeur+=imports[i].Length()+5; -alib=imports[i].SubString(0,imports[i].Pos(":")-1); -int j; -for(j=0;(jTreeView->Items->AddChild(currentnode,libraries[i]); -subcurrentnode->ImageIndex=13; -for(int j=0;jTreeView->Items->AddChild(subcurrentnode,imports[j].SubString(imports[j].Pos(":")+2,255)); -subsubcurrentnode->ImageIndex=3; -Form1->TreeView->Items->AddChild(subsubcurrentnode,"Adresse réelle: 0x"+IntToHex((int)iaddrs[j]+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subsubcurrentnode,"Adresse : 0x"+IntToHex((int)iaddrs[j],4))->ImageIndex=31; -} -} -} -currentnode->Text="importations ("+IntToStr(nbimp)+"/"+IntToStr(nblib)+")"; -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x"+IntToHex((int)pointeur-myce.imports,4))->ImageIndex=31; -} -else -{ -nbimp=0; -} - -i=0; -pointeur=myce.exports; -int nbexp=0; - -if (myce.exports!=0) -{ -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Exportations"); -currentnode->ImageIndex=14; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -do -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&imported, sizeof(imported), 1, in); -exports[i]=AnsiString((char*)&imported); -pointeur+=exports[i].Length()+1; -fseek(in, pointeur+offset, SEEK_SET); -fread(&eaddrs[i],sizeof(eaddrs[i]),1,in); -pointeur+=2; -i++; -} while(exports[i-1]!=""); - -nbexp=i-1; - -for(int i=0;iTreeView->Items->AddChild(currentnode,exports[i]); -subcurrentnode->ImageIndex=3; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex(eaddrs[i]+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex(eaddrs[i],4))->ImageIndex=31; -} -currentnode->Text="exportations ("+IntToStr(nbexp)+")"; -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x"+IntToHex((int)pointeur-myce.exports,4))->ImageIndex=31; -} -else -{ -nbexp=0; -} - -pointeur=myce.sections; -i=0; -int nbsec=0; - -if (myce.sections!=0) -{ -currentnode=Form1->TreeView->Items->AddChild(rootnode,"Sections"); -currentnode->ImageIndex=12; -Form1->TreeView->Items->AddChild(currentnode,"Adresse réelle: 0x"+IntToHex((int)pointeur+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(currentnode,"Adresse : 0x"+IntToHex((int)pointeur,4))->ImageIndex=31; -do -{ -fseek(in, pointeur+offset, SEEK_SET); -fread(&saddrs[i],sizeof(saddrs[i]),1,in); -pointeur+=2; -fseek(in, pointeur+offset, SEEK_SET); -fread(&ssize[i],sizeof(ssize[i]),1,in); -pointeur+=2; -fseek(in, pointeur+offset, SEEK_SET); -fread(&imported, sizeof(imported), 1, in); -sections[i]=AnsiString((char*)&imported); -pointeur+=sections[i].Length()+1; -i++; -} while(ssize[i-1]!=0); -nbsec=i-1; -for(int i=0;iTreeView->Items->AddChild(currentnode,sections[i]); -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse réelle: 0x"+IntToHex(saddrs[i]+offset,4))->ImageIndex=31; -Form1->TreeView->Items->AddChild(subcurrentnode,"Adresse : 0x"+IntToHex(saddrs[i],4))->ImageIndex=31; -if (saddrs[i]!=0) tree(file,saddrs[i],subcurrentnode); -subcurrentnode->ImageIndex=2; -Form1->TreeView->Items->AddChild(subcurrentnode,"Taille : 0x"+IntToHex(ssize[i],4))->ImageIndex=31; -} -Form1->TreeView->Items->AddChild(currentnode,"Taille : 0x"+IntToHex((int)pointeur-myce.sections,4))->ImageIndex=31; -currentnode->Text="Sections ("+IntToStr(nbsec)+")"; -} -else -{ -nbsec=0; -} - -if (offset==0) -{ -fseek(in, 0L, SEEK_END); -int size = ftell(in); -Form1->TreeView->Items->AddChild(rootnode,"Taille : 0x"+IntToHex(size,4))->ImageIndex=31; -} -} -fclose(in); -} -} -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Ouvrir1Click(TObject *Sender) -{ -if (OpenDialog->Execute()) -tree(OpenDialog->FileName,0,Form1->TreeView->Items->Add(Form1->TreeView->Items->GetFirstNode(),ExtractFileName(OpenDialog->FileName))); -TTreeNode* node=Form1->TreeView->Items->GetFirstNode(); -while(node!=NULL) -{ -node->SelectedIndex=node->ImageIndex; -node=node->GetNext(); -} -} - -//--------------------------------------------------------------------------- - -void __fastcall TForm1::Quitter1Click(TObject *Sender) -{ -Close(); -} -//--------------------------------------------------------------------------- - - diff --git a/outils/CE explorer/unit1.ddp b/outils/CE explorer/unit1.ddp deleted file mode 100644 index cdc0ee8..0000000 Binary files a/outils/CE explorer/unit1.ddp and /dev/null differ diff --git a/outils/CE explorer/unit1.dfm b/outils/CE explorer/unit1.dfm deleted file mode 100644 index 682f200..0000000 --- a/outils/CE explorer/unit1.dfm +++ /dev/null @@ -1,1434 +0,0 @@ -object Form1: TForm1 - Left = 293 - Top = 172 - Width = 688 - Height = 496 - Caption = 'CE explorer' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - Menu = MainMenu1 - OldCreateOrder = False - PixelsPerInch = 96 - TextHeight = 13 - object TreeView: TTreeView - Left = 0 - Top = 0 - Width = 504 - Height = 442 - Align = alClient - Images = ImageList - Indent = 29 - ReadOnly = True - TabOrder = 0 - end - object RichEdit1: TRichEdit - Left = 504 - Top = 0 - Width = 176 - Height = 442 - Align = alRight - ReadOnly = True - TabOrder = 1 - end - object MainMenu1: TMainMenu - Left = 216 - object Fichier1: TMenuItem - Caption = 'Fichier' - object Ouvrir1: TMenuItem - Caption = 'Ouvrir...' - OnClick = Ouvrir1Click - end - object N1: TMenuItem - Caption = '-' - end - object Quitter1: TMenuItem - Caption = 'Quitter' - OnClick = Quitter1Click - end - end - end - object OpenDialog: TOpenDialog - Left = 248 - end - object ImageList: TImageList - Height = 15 - Width = 26 - Left = 280 - Bitmap = { - 494C01012C00310004001A000F00FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 000000000000360000002800000068000000C30000000100100000000000709E - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000001000100000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000010001000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000000000001000 - 1000000000000000000000000000000000001042186300000000000000000000 - 0000000000001042000000000000000000000000000000000000000000000000 - 0000000000001042186300000000000000000000000000000000104200000000 - 10001000100010001000000000000000000000000000000000001042007C0000 - 0000000000000000000000000000104200000000000000000000000000000000 - 00000000000000000000000000001042007C0000000000000000000000000000 - 0000104200000000100010001000100010000000000000000000000000000000 - 00001042FF7F1863000000000000000000000000000010420000000000000000 - 000000000000000000000000000000000000000000001042FF7F186300000000 - 0000000000000000000010420000000010001000000010001000000000000000 - 000000000000000000001042FF7F007C00000000000000000000000000001042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007C00000000000000000000000000001042000000001000100000001000 - 1000000000000000E07F0000E07F0000000010421863FF7F1863000000000000 - 00000000000010420000000000000000000000000000000000000000E07F0000 - E07F0000000010421863FF7F1863000000000000000000000000104200000000 - 10001000000010001000000000000000E07F0000E07F000000001042007CFF7F - 007C000000000000000000000000104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F007C00000000000000000000 - 00001042000000001000100000001000100000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F18630000000000000000000010420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863 - 000000000000000000001042000000001000100000001000100000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007C000000000000000000001042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007CFF7F007C000000000000000000001042000000001000100000001000 - 1000000000000000E07FE07FE07F0000000010421863FF7F1863FF7F18630000 - 00000000000010420000000000000000000000000000000000000000E07FE07F - E07F0000000010421863FF7F1863FF7F18630000000000000000104200000000 - 00000000000000000000000000000000E07FE07FE07F000000001042007CFF7F - 007CFF7F007C0000000000000000104200000000000000000000000000000000 - 00000000E07FE07FE07F000000001042007CFF7F007CFF7F007C000000000000 - 00001042000000000000000000000000000000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F1863FF7F186300000000000010420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863 - FF7F18630000000000001042000000000000100010001000000000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007CFF7F007C0000000000001042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007CFF7F007CFF7F007C0000000000001042000000000000100010001000 - 0000000000000000E07F0000E07F0000000010421863FF7F1863FF7F1863FF7F - 18630000000010420000000000000000000000000000000000000000E07F0000 - E07F0000000010421863FF7F1863FF7F1863FF7F186300000000104200000000 - 10001000000010001000000000000000E07F0000E07F000000001042007CFF7F - 007CFF7F007CFF7F007C00000000104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F007CFF7F007CFF7F007C0000 - 0000104200000000100010000000100010000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863000010420000000000000000 - 000000000000000000000000000000000000000000001042FF7F1863FF7F1863 - FF7F1863FF7F1863000010420000000010001000000010001000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007C00001042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F007CFF7F007C00001042000000001000100000001000 - 1000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 1000100010001000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000100010001000100000000000000000000000000000000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000000000000 - 000000000000000000000000000000000000000000001042FF03FF03FF03FF03 - FF03FF03FF03FF03FF0310420000000010001000000000000000000000000000 - 000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF03FF03FF03FF03FF03FF03FF03FF03FF031042000000001000100000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000100010001000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000010001000100000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000100010000000000000000000000000000000000000001042104210421042 - 1042104210421042104210421042000000000000000010001000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000010001000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000001000 - 1000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000001000100000000000000000000000 - 0000000000001863186318631863186318631863186318631863186310420000 - 0000000000001000100000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000100010000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000100010000000000000000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000010001000 - 1000100010000000000000000000000000000000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000010001000100010001000000000000000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000010001000100010001000000000000000000000000000000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000001000100010001000 - 1000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000001000100000001000100000000000000000000000 - 0000000000001863FF7F1863FF7F1863FF7F000000001863FF7F186310420000 - 10001000000010001000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000100010000000100010000000 - 00000000000000000000000000001042FF7F007CFF7F007CFF7F00000000007C - FF7F10420000000010001000000010001000000000000000E07F0000E07F0000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000010001000 - 000010001000000000000000E07F0000E07F0000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000010001000000010001000000000000000 - E07F0000E07F000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000010001000000010001000000000000000E07F0000E07F000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000001000100000001000 - 100000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000001000100000001000100000000000E07F0000E07F - 0000E07F00001863FF7F1863000018630000000000001863FF7F186310420000 - 1000100000001000100000000000E07F0000E07F0000E07F00001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000100010000000100010000000 - 0000E07F0000E07F0000E07F00001042FF7F007C0000007C000000000000007C - FF7F10420000000010001000000010001000000000000000E07FE07FE07F0000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 000000000000000000000000E07FE07FE07F0000000018631863FF7F00000000 - 000000001863FF7F186318631042000000000000000000000000000000000000 - E07FE07FE07F000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000000000000E07FE07FE07F000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000000000000000000000 - 000000000000E07F0000E07F0000E07F00001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000100010001000000000000000E07F0000E07F - 0000E07F00001863FF7F18630000000000001863FF7F1863FF7F186310420000 - 0000100010001000000000000000E07F0000E07F0000E07F00001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000010001000100000000000 - 0000E07F0000E07F0000E07F00001042FF7F007C000000000000007CFF7F007C - FF7F10420000000000001000100010000000000000000000E07F0000E07F0000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000010001000 - 000010001000000000000000E07F0000E07F0000000018631863FF7F00000000 - 000000001863FF7F186318631042000010001000000010001000000000000000 - E07F0000E07F000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000010001000000010001000000000000000E07F0000E07F000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000001000100000001000 - 1000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000001000100000001000100000000000000000000000 - 0000000000001863FF7F1863FF7F1863FF7F1863FF7F1863FF7F186310420000 - 10001000000010001000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000100010000000100010000000 - 00000000000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007C - FF7F104200000000100010000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000010001000 - 1000100000000000000000000000000000000000000018631863186318631863 - 1863186318631863186318631042000010001000100010000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000010001000100010000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000001000100010001000 - 0000000000000000000000000000000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF031042000000001000100000000000000000000000000000000000 - 0000000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF03186310420000 - 10001000000000000000000000000000000000000000000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000100010000000000000000000 - 00000000000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03 - FF03104200000000100010000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000001000 - 1000100000000000000000000000000000000000000018631863186318631863 - 1863186318631863186318630000000000001000100010000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000001000100010000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000100010001000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000104210421042104210421042104210421042104210420000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000018631863186318631863 - 1863186318631863186318631042000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000000000000000 - 00000000000000000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000000000000000000000000000000000000000000000 - 00000000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 00000000000000000000000000000000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000000000000000000000001042007CFF7F007CFF7F007C00000000FF7F - 007C104200000000000000000000000000000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 000000000000000000000000000000000000000000001863FF7F1863FF7F1863 - FF7F000000001863FF7F18631042000000000000000000000000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F00000000007CFF7F1042000000000000000000000000 - 0000000000000000E07F0000E07F0000000010421863FF7F1863FF7F1863FF7F - 1863FF7F186310420000000000000000000000000000000000000000E07F0000 - E07F0000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 00000000000000000000000000000000E07F0000E07F000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F007CFF7F007C00000000FF7F - 007C1042000000000000000000000000000000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001863FF7F186300001863 - 0000000000001863FF7F1863104200000000000000000000000000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007C0000007C000000000000007CFF7F1042000000000000000000000000 - 0000000000000000E07FE07FE07F0000000010421863FF7F1863FF7F1863FF7F - 1863FF7F186310420000000000000000000000000000000000000000E07FE07F - E07F0000000018631863FF7F00000000000000001863FF7F1863186310420000 - 00000000000000000000000000000000E07FE07FE07F000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000E07FE07FE07F000000001042007CFF7F0000000000000000007CFF7F - 007C1042000000000000000000000000000000000000E07F0000E07F0000E07F - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 00000000000000000000E07F0000E07F0000E07F00001863FF7F186300000000 - 00001863FF7F1863FF7F1863104200000000000000000000000000000000E07F - 0000E07F0000E07F00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 000000000000000000000000000000000000E07F0000E07F0000E07F00001042 - FF7F007C000000000000007CFF7F007CFF7F1042000000000000000000000000 - 0000000000000000E07F0000E07F0000000010421863FF7F1863FF7F1863FF7F - 1863FF7F186310420000000000000000000000000000000000000000E07F0000 - E07F0000000018631863FF7F00000000000000001863FF7F1863186310420000 - 00000000000000000000000000000000E07F0000E07F000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000E07F0000E07F000000001042007CFF7F0000000000000000007CFF7F - 007C104200000000000000000000000000000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000000000 - 000000000000000000000000000000000000000000001863FF7F1863FF7F1863 - FF7F1863FF7F1863FF7F18631042000000000000000000000000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001863186318631863186318631863186318631863186310420000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000000000000000000000000000000000000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000000000000 - 000000000000000000000000000000000000000000001863FF03FF7FFF03FF7F - FF03FF7FFF03FF7FFF0318631042000000000000000000000000000000000000 - 000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 0000000000000000000000000000000000000000000000000000000000001042 - FF03FF03FF03FF03FF03FF03FF03FF03FF031042000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001863186318631863186318631863186318631863186300000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000100010000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000010001000000000000000 - 0000000000000000000000000000000000000000E07FE07FE07FE07F00000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000007C007C007C007C00000000000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000001000100000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000000000001000100000000000000000000000000000000000000000000000 - E07FE07FE07F00000000E07FE07FE07F00000000000000000000000000000000 - 0000000000000000000000000000000000000000007C007C007C00000000007C - 007C007C000000000000000000000000000010421F001F001F001F001F000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000010001000 - 10001000100010421F001F001F001F001F00000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000010001000100010001000000000000000 - 0000000000000000000000000042E07FE07FE07FE07F00000000E07FE07FE07F - E07F000000000000000000000000000000000000000000000000000000000000 - 0040007C007C007C007C00000000007C007C007C007C00000000000000000000 - 00001042FF7FFF7F186318631863000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F104200000000100010000000100010001042FF7FFF7F18631863 - 1863000000001042FF7F007CFF7F007CFF7F00000000007CFF7F104200000000 - 100010000000100010000000000000000000000000000000000000000042E07F - E07FE07FE07FE07FE07FE07FE07FE07FE07F0000000000000000000000000000 - 000000000000000000000000000000000040007C007C007C007C007C007C007C - 007C007C007C0000000000000000000000001042FF7FFF7F1863186318630000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000010001000 - 0000100010001042FF7FFF7F186318631863000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000010001000000010001000000000000000 - E07F0000E07F000000000042E07FE07FE07FE07FE07F00000000E07FE07FE07F - E07FE07F00000000000000000000000000000000E07F0000E07F000000000040 - 007C007C007C007C007C00400040007C007C007C007C007C0000000000000000 - 000000001042FF7F186318630000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000001000100000001000100000001042FF7F18631863 - 0000000000001042FF7F007C0000007C000000000000007CFF7F104200000000 - 1000100000001000100000000000E07F0000E07F0000E07F00000042E07FE07F - E07FE07FE07F00000000E07FE07FE07FE07FE07F000000000000000000000000 - 0000E07F0000E07F0000E07F00000040007C007C007C007C007C00000000007C - 007C007C007C007C000000000000000000000000000010421863000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000001042186300000000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000000000000000000000000000000000000 - E07FE07FE07F000000000042E07FE07FE07FE07FE07FE07F00000000E07FE07F - E07FE07F00000000000000000000000000000000E07FE07FE07F000000000040 - 007C007C007C007C007C00000000007C007C007C007C007C0000000000000000 - 0000000000001042186300000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000100010001000000000000000104218630000 - 0000000000001042FF7F007C000000000000007CFF7F007CFF7F104200000000 - 0000100010001000000000000000E07F0000E07F0000E07F00000042E07FE07F - E07FE07FE07FE07FE07F00000000E07FE07FE07F000000000000000000000000 - 0000E07F0000E07F0000E07F00000040007C007C007C007C0040000000000040 - 007C007C007C007C000000000000000000000000104218631863186300000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000010001000 - 000010001000000010421863186318630000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000010001000000010001000000000000000 - E07F0000E07F0000000000000042E07FE07F00000000E07FE07F00000000E07F - E07F000000000000000000000000000000000000E07F0000E07F000000000000 - 0040007C007C007C0040000000000040007C007C007C00000000000000000000 - 0000104218631863186318631863000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000001000100000001000100010421863186318631863 - 1863000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F104200000000 - 100010000000100010000000000000000000000000000000000000000042E07F - E07F000000000000000000000000E07FE07F0000000000000000000000000000 - 000000000000000000000000000000000040007C007C007C0040000000000040 - 007C007C007C0000000000000000000000001042FF7FFF7FFF7F186318630000 - 0000104210421042104210421042104210421042104210420000000010001000 - 1000100000001042FF7FFF7FFF7F186318630000000010421042104210421042 - 1042104210421042104210420000000010001000100010000000000000000000 - 00000000000000000000000000000042E07FE07F0000000000000000E07FE07F - 0000000000000000000000000000000000000000000000000000000000000000 - 00000040007C007C007C00000000007C007C007C000000000000000000000000 - 000010421F001F001F001F001F00000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF031042000000001000100000000000000010421F001F001F001F00 - 1F00000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF03104200000000 - 1000100000000000000000000000000000000000000000000000000000000000 - 00420042E07FE07FE07FE07F0042004200000000000000000000000000000000 - 000000000000000000000000000000000000000000400040007C007C007C007C - 0040004000000000000000000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000001000 - 1000100000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000001000100010000000000000000000 - 0000000000000000000000000000000000000000004200420042004200000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000004000400040004000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000100010000000 - 0000000000000000000000000000000010421042104210421042104210421042 - 1042104210420000000000000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000010001000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863104200000000000000001000 - 100010421F001F001F001F001F00000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000010421F001F001F001F00 - 1F00000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 0000000000000000000010421F001F001F001F001F000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000100010001000100010001042 - 1F001F001F001F001F000000000018631863FF7F1863FF7F186300000000FF7F - 1863186310420000100010001000100010001042FF7FFF7F1863186318630000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 0000000000001042FF7FFF7F186318631863000000001042FF7F007CFF7F007C - FF7F00000000007CFF7F104200000000000000000000000000001042FF7FFF7F - 186318631863000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 00000000100010000000100010001042FF7FFF7F186318631863000000001863 - FF7F1863FF7F1863FF7F000000001863FF7F1863104200001000100000001000 - 10001042FF7FFF7F186318631863000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C104200000000000000000000000000001042FF7FFF7F18631863 - 1863000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 000000000000000000001042FF7FFF7F1863186318630000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000100010000000100010001042 - FF7FFF7F1863186318630000000018631863FF7F1863FF7F186300000000FF7F - 18631863104200001000100000001000100000001042FF7F1863186300000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 00000000000000001042FF7F186318630000000000001042FF7F007C0000007C - 000000000000007CFF7F1042000000000000000000000000000000001042FF7F - 186318630000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 000000001000100000001000100000001042FF7F186318630000000000001863 - FF7F1863000018630000000000001863FF7F1863104200001000100000001000 - 1000000000001042186300000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000000000000104218630000 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 000000000000000000000000000010421863000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000010421863000000000000000018631863FF7F00000000000000001863FF7F - 1863186310420000000000000000000000000000000010421863000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 000000000000000000001042186300000000000000001042FF7F007C00000000 - 0000007CFF7F007CFF7F10420000000000000000000000000000000000001042 - 186300000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000001000100010000000000000001042186300000000000000001863 - FF7F18630000000000001863FF7F1863FF7F1863104200000000100010001000 - 0000000010421863186318630000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000000001042186318631863 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 000000000000000000000000104218631863186300000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000100010000000100010000000 - 104218631863186300000000000018631863FF7F00000000000000001863FF7F - 1863186310420000100010000000100010001042186318631863186318630000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000000000 - 000000000000104218631863186318631863000000001042FF7F007CFF7F007C - FF7F007CFF7F007CFF7F10420000000000000000000000000000104218631863 - 186318631863000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000010001000000010001000104218631863186318631863000000001863 - FF7F1863FF7F1863FF7F1863FF7F1863FF7F1863104200001000100000001000 - 10001042FF7FFF7FFF7F18631863000000001042104210421042104210421042 - 104210421042104200000000000000000000000000001042FF7FFF7FFF7F1863 - 1863000000001042104210421042104210421042104210421042104200000000 - 000000000000000000001042FF7FFF7FFF7F1863186300000000104210421042 - 1042104210421042104210421042104200000000100010001000100000001042 - FF7FFF7FFF7F1863186300000000186318631863186318631863186318631863 - 18631863104200001000100010001000000010421F001F001F001F001F000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000000000000 - 00000000000010421F001F001F001F001F00000000001042FF03FF03FF03FF03 - FF03FF03FF03FF03FF031042000000000000000000000000000010421F001F00 - 1F001F001F00000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 000000001000100000000000000010421F001F001F001F001F00000000001863 - FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF031863104200001000100000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000010001000100000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186300000000000010001000100000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000E07FE07FE07FE07F000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 007C007C007C007C000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 1042104210421042104210421042104210421042104200000000000000000000 - 000010421F001F001F001F001F0000000000000000000000E07FE07FE07F0000 - 0000E07FE07FE07F000000000000000000000000000010421F001F001F001F00 - 1F0000000000000000000000007C007C007C00000000007C007C007C00000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186310420000000000000000000000001042FF7FFF7F1863186318630000 - 000000000042E07FE07FE07FE07F00000000E07FE07FE07FE07F000000000000 - 0000000000001042FF7FFF7F1863186318630000000000000040007C007C007C - 007C00000000007C007C007C007C00000000000000000000000010421F001F00 - 1F001F001F000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 000000000000000000000000000010421F001F001F001F001F00000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200000000000000000000 - 00001042FF7FFF7F1863186318630000000000000042E07FE07FE07FE07FE07F - E07FE07FE07FE07FE07F0000000000000000000000001042FF7FFF7F18631863 - 18630000000000000040007C007C007C007C007C007C007C007C007C007C0000 - 000000000000000000001042FF7FFF7F186318631863000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000001042 - FF7FFF7F186318631863000000001863FF7F1863FF7F1863FF7F000000001863 - FF7F1863104200000000000000000000000000001042FF7F1863186300000000 - 00000042E07FE07FE07FE07FE07F00000000E07FE07FE07FE07FE07F00000000 - 00000000000000001042FF7F186318630000000000000040007C007C007C007C - 007C00400040007C007C007C007C007C000000000000000000001042FF7FFF7F - 1863186318630000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 00000000000000000000000000001042FF7FFF7F186318631863000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200000000000000000000 - 0000000000001042186300000000000000000042E07FE07FE07FE07FE07F0000 - 0000E07FE07FE07FE07FE07F0000000000000000000000000000104218630000 - 0000000000000040007C007C007C007C007C00000000007C007C007C007C007C - 0000000000000000000000001042FF7F186318630000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000000000 - 1042FF7F186318630000000000001863FF7F1863000018630000000000001863 - FF7F186310420000000000000000000000000000000010421863000000000000 - 00000042E07FE07FE07FE07FE07FE07F00000000E07FE07FE07FE07F00000000 - 000000000000000000001042186300000000000000000040007C007C007C007C - 007C00000000007C007C007C007C007C00000000000000000000000000001042 - 1863000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000000000000000000000000000000001042186300000000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200000000000000000000 - 0000000010421863186318630000000000000042E07FE07FE07FE07FE07FE07F - E07F00000000E07FE07FE07F0000000000000000000000001042186318631863 - 0000000000000040007C007C007C007C0040000000000040007C007C007C007C - 00000000000000000000000000001042186300000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000000000 - 00001042186300000000000000001863FF7F18630000000000001863FF7F1863 - FF7F186310420000000000000000000000001042186318631863186318630000 - 000000000042E07FE07F00000000E07FE07F00000000E07FE07F000000000000 - 0000000000001042186318631863186318630000000000000040007C007C007C - 0040000000000040007C007C007C000000000000000000000000000010421863 - 1863186300000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000000000000000000000000000010421863186318630000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200000000000000000000 - 00001042FF7FFF7FFF7F186318630000000000000042E07FE07F000000000000 - 000000000000E07FE07F0000000000000000000000001042FF7FFF7FFF7F1863 - 18630000000000000040007C007C007C0040000000000040007C007C007C0000 - 00000000000000000000104218631863186318631863000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000000000000000000001042 - 18631863186318631863000000001863FF7F1863FF7F1863FF7F1863FF7F1863 - FF7F1863104200000000000000000000000010421F001F001F001F001F000000 - 0000000000000042E07FE07F0000000000000000E07FE07F0000000000000000 - 00000000000010421F001F001F001F001F0000000000000000000040007C007C - 007C00000000007C007C007C00000000000000000000000000001042FF7FFF7F - FF7F186318630000000010421042104210421042104210421042104210421042 - 00000000000000000000000000001042FF7FFF7FFF7F18631863000000001863 - 1863186318631863186318631863186318631863104200000000000000000000 - 00000000000000000000000000000000000000000000000000420042E07FE07F - E07FE07F00420042000000000000000000000000000000000000000000000000 - 00000000000000000000000000400040007C007C007C007C0040004000000000 - 0000000000000000000010421F001F001F001F001F00000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000000000000000000000001042 - 1F001F001F001F001F00000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7F - FF03186310420000000000000000000000000000000000000000000000000000 - 0000000000000000000000000042004200420042000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0040004000400040000000000000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001000100000000000000000000000 - 0000000000000000104210421042104210421042104210421042104210420000 - 0000000000001000100000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000100010000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000100010000000000000000000000000000000000018631863186318631863 - 1863186318631863186318631042000000000000000010001000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000010001000000000000000000000000000000000001042 - 1042104210421042104210421042104210421042000000000000000000001000 - 10000000104200000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000001000100010001000100000001042000000000000 - 00000000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 10001000100010001000000010420000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000100010001000100010000000 - 10420000000000000000000000001042007CFF7F007CFF7F007C00000000FF7F - 007C104200000000100010001000100010000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000010001000 - 000010001000000000000000000000000000000000001863FF7F1863FF7F1863 - FF7F000000001863FF7F18631042000010001000000010001000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000010001000000010001000000000000000000000000000000000001042 - FF7F007CFF7F007CFF7F00000000007CFF7F1042000000001000100000001000 - 10000000000000000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000001000100000001000100000000000000000000000 - 00000000000018631863FF7F1863FF7F186300000000FF7F1863186310420000 - 10001000000010001000000000000000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000100010000000100010000000 - 00000000000000000000000000001042007CFF7F007CFF7F007C00000000FF7F - 007C104200000000100010000000100010000000000000000000000000000000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000010001000 - 000010001000000000000000000000000000000000001863FF7F186300001863 - 0000000000001863FF7F18631042000010001000000010001000000000000000 - 000000000000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000010001000000010001000000000000000000000000000000000001042 - FF7F007C0000007C000000000000007CFF7F1042000000001000100000001000 - 10000000000000000000000000000000000010421863FF7F1863FF7F1863FF7F - 1863FF7F18631042000000000000000000000000000000000000000000000000 - 00000000000018631863FF7F00000000000000001863FF7F1863186310420000 - 00000000000000000000000000000000000000000000000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000000000000000000000000000 - 00000000000000000000000000001042007CFF7F0000000000000000007CFF7F - 007C104200000000000000000000000000001042104210421042104210420000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000000001000 - 100010000000104210421042104210421042000000001863FF7F186300000000 - 00001863FF7F1863FF7F18631042000000001000100010000000104210421042 - 104210421042000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 0000000000001000100010000000104210421042104210421042000000001042 - FF7F007C000000000000007CFF7F007CFF7F1042000000000000100010001000 - 00001042FF7FFF7FFF7FFF7F10420000000010421863FF7F1863FF7F1863FF7F - 1863FF7F1863104200000000100010000000100010001042FF7FFF7FFF7FFF7F - 10420000000018631863FF7F00000000000000001863FF7F1863186310420000 - 100010000000100010001042FF7FFF7FFF7FFF7F1042000000001042007CFF7F - 007CFF7F007CFF7F007CFF7F007C104200000000100010000000100010001042 - FF7FFF7FFF7FFF7F1042000000001042007CFF7F0000000000000000007CFF7F - 007C104200000000100010000000100010001042FF7FFF7FFF7FFF7F10420000 - 00001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F10420000000010001000 - 0000100010001042FF7FFF7FFF7FFF7F1042000000001863FF7F1863FF7F1863 - FF7F1863FF7F1863FF7F186310420000100010000000100010001042FF7FFF7F - FF7FFF7F1042000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042 - 00000000100010000000100010001042FF7FFF7FFF7FFF7F1042000000001042 - FF7F007CFF7F007CFF7F007CFF7F007CFF7F1042000000001000100000001000 - 1000104210421042104210421042000000001042104210421042104210421042 - 1042104210421042000000001000100010001000000010421042104210421042 - 1042000000001863186318631863186318631863186318631863186310420000 - 1000100010001000000010421042104210421042104200000000104210421042 - 1042104210421042104210421042104200000000100010001000100000001042 - 1042104210421042104200000000104210421042104210421042104210421042 - 1042104200000000100010001000100000001042FF03FF03FF03FF0310420000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000010001000 - 0000000000001042FF03FF03FF03FF031042000000001863FF03FF7FFF03FF7F - FF03FF7FFF03FF7FFF03186310420000100010000000000000001042FF03FF03 - FF03FF031042000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 00000000100010000000000000001042FF03FF03FF03FF031042000000001042 - FF03FF03FF03FF03FF03FF03FF03FF03FF031042000000001000100000000000 - 0000104210421042104210421042000000001042104210421042104210421042 - 1042104210421042000000000000100010001000000010421042104210421042 - 1042000000001863186318631863186318631863186318631863186300000000 - 0000100010001000000010421042104210421042104200000000104210421042 - 1042104210421042104210421042104200000000000010001000100000001042 - 1042104210421042104200000000104210421042104210421042104210421042 - 1042104200000000000010001000100000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000001042104210421042 - 1042104210421042104210421042000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001863186318631863186318631863186318631863186310420000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000104210421042104210421042104210421042 - 1042104200000000000000000000000000000000104200000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000000000104200000000000000000000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000000000000000000000000000010420000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000010420000000000000000000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000000000000000000000 - 0000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000000000000000000000000000000000000000 - 0000000000001863FF7F1863FF7F1863FF7F000000001863FF7F186310420000 - 00000000000000000000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000000000 - 00000000000000000000000000001042FF7F007CFF7F007CFF7F00000000007C - FF7F104200000000000000000000000000000000000000000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000000000000000000000000000000000000018631863FF7F1863FF7F - 186300000000FF7F186318631042000000000000000000000000000000000000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000000000000000000000000000000001042 - 007CFF7F007CFF7F007C00000000FF7F007C1042000000000000000000000000 - 0000000000000000000000000000000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000000000000000000000000000000000000000 - 0000000000001863FF7F1863000018630000000000001863FF7F186310420000 - 00000000000000000000000000000000000000000000000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000000000 - 00000000000000000000000000001042FF7F007C0000007C000000000000007C - FF7F104200000000000000000000000000000000000000000000000000000000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000000000000000000000000000000000000018631863FF7F00000000 - 000000001863FF7F186318631042000000000000000000000000000000000000 - 000000000000000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 0000000000000000000000000000000000000000000000000000000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000000000000000000000 - 0000104210421042104210421042000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F1042000000000000000000000000000010421042104210421042 - 1042000000001863FF7F18630000000000001863FF7F1863FF7F186310420000 - 00000000000000000000104210421042104210421042000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000001042 - 10421042104210421042000000001042FF7F007C000000000000007CFF7F007C - FF7F104200000000000000000000000000001042FF7FFF7FFF7FFF7F10420000 - 000010421863FF7F1863FF7F1863FF7F1863FF7F186310420000000000000000 - 0000000000001042FF7FFF7FFF7FFF7F10420000000018631863FF7F00000000 - 000000001863FF7F1863186310420000000000000000000000001042FF7FFF7F - FF7FFF7F1042000000001042007CFF7F007CFF7F007CFF7F007CFF7F007C1042 - 00000000000000000000000000001042FF7FFF7FFF7FFF7F1042000000001042 - 007CFF7F0000000000000000007CFF7F007C1042000000000000000000000000 - 00001042FF7FFF7FFF7FFF7F1042000000001042FF7F1863FF7F1863FF7F1863 - FF7F1863FF7F104200000000000000000000000000001042FF7FFF7FFF7FFF7F - 1042000000001863FF7F1863FF7F1863FF7F1863FF7F1863FF7F186310420000 - 000000000000000000001042FF7FFF7FFF7FFF7F1042000000001042FF7F007C - FF7F007CFF7F007CFF7F007CFF7F104200000000000000000000000000001042 - FF7FFF7FFF7FFF7F1042000000001042FF7F007CFF7F007CFF7F007CFF7F007C - FF7F104200000000000000000000000000001042104210421042104210420000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000001042104210421042104210420000000018631863186318631863 - 1863186318631863186318631042000000000000000000000000104210421042 - 1042104210420000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000104210421042104210421042000000001042 - 1042104210421042104210421042104210421042000000000000000000000000 - 00001042FF03FF03FF03FF031042000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF03104200000000000000000000000000001042FF03FF03FF03FF03 - 1042000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF03186310420000 - 000000000000000000001042FF03FF03FF03FF031042000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000000000000000000000001042 - FF03FF03FF03FF031042000000001042FF03FF03FF03FF03FF03FF03FF03FF03 - FF03104200000000000000000000000000001042104210421042104210420000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000001042104210421042104210420000000018631863186318631863 - 1863186318631863186318630000000000000000000000000000104210421042 - 1042104210420000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000104210421042104210421042000000001042 - 1042104210421042104210421042104210421042000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001000100000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000001000100000000000000000000000000000000000000000000000 - 00000000E07FE07FE07FE07F0000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000007C007C007C007C - 0000000000000000000000000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000100010000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000010001000000000000000 - 00000000000000000000000000000000E07FE07FE07F00000000E07FE07FE07F - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000007C007C007C00000000007C007C007C000000000000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000001000100010001000100000000000000000000000 - 0000000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 100010001000100010000000104200000000000000000000000000000042E07F - E07FE07FE07F00000000E07FE07FE07FE07F0000000000000000000000000000 - 104200000000000000000000000000000040007C007C007C007C00000000007C - 007C007C007C0000000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000010001000 - 000010001000000000000000000000000000000000001042FF7F007CFF7F007C - FF7F00000000007CFF7F10420000000010001000000010001000000000000000 - 0000000000000000000000000042E07FE07FE07FE07FE07FE07FE07FE07FE07F - E07F000000000000000000000000000000000000000000000000000000000000 - 0040007C007C007C007C007C007C007C007C007C007C00000000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000001000100000001000100000000000000000000000 - 0000000000001042007CFF7F007CFF7F007C00000000FF7F007C104200000000 - 10001000000010001000000000000000000000000000000000000042E07FE07F - E07FE07FE07F00000000E07FE07FE07FE07FE07F000000000000000000000000 - 00000000000000000000000000000040007C007C007C007C007C00400040007C - 007C007C007C007C000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000010001000 - 000010001000000000000000000000000000000000001042FF7F007C0000007C - 000000000000007CFF7F10420000000010001000000010001000000000000000 - 000000000000000000000042E07FE07FE07FE07FE07F00000000E07FE07FE07F - E07FE07F00000000000000000000000000000000000000000000000000000040 - 007C007C007C007C007C00000000007C007C007C007C007C0000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000000000000000000000000000000000000000000000 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 00000000000000000000000000000000000000000000000000000042E07FE07F - E07FE07FE07FE07F00000000E07FE07FE07FE07F000000000000000000000000 - 00000000000000000000000000000040007C007C007C007C007C00000000007C - 007C007C007C007C000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000000001000 - 100010000000000000000000000000000000000000001042FF7F007C00000000 - 0000007CFF7F007CFF7F10420000000000001000100010000000104210421042 - 104210421042000000000042E07FE07FE07FE07FE07FE07FE07F00000000E07F - E07FE07F00000000000000000000104210421042104210421042000000000040 - 007C007C007C007C0040000000000040007C007C007C007C0000000000000000 - 0000000000000000000000000000000000001042007CFF7F007CFF7F007CFF7F - 007CFF7F007C1042000000001000100000001000100000000000000000000000 - 0000000000001042007CFF7F0000000000000000007CFF7F007C104200000000 - 100010000000100010001042FF7FFF7FFF7FFF7F10420000000000000042E07F - E07F00000000E07FE07F00000000E07FE07F0000000000000000000000001042 - FF7FFF7FFF7FFF7F10420000000000000040007C007C007C0040000000000040 - 007C007C007C0000000000000000000000000000000000000000000000000000 - 00001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F10420000000010001000 - 000010001000000000000000000000000000000000001042FF7F007CFF7F007C - FF7F007CFF7F007CFF7F104200000000100010000000100010001042FF7FFF7F - FF7FFF7F10420000000000000042E07FE07F000000000000000000000000E07F - E07F0000000000000000000000001042FF7FFF7FFF7FFF7F1042000000000000 - 0040007C007C007C0040000000000040007C007C007C00000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000001000100010001000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 1000100010001000000010421042104210421042104200000000000000000042 - E07FE07F0000000000000000E07FE07F00000000000000000000000000001042 - 1042104210421042104200000000000000000040007C007C007C00000000007C - 007C007C00000000000000000000000000000000000000000000000000000000 - 00001042FF03FF03FF03FF03FF03FF03FF03FF03FF0310420000000010001000 - 000000000000000000000000000000000000000000001042FF03FF03FF03FF03 - FF03FF03FF03FF03FF03104200000000100010000000000000001042FF03FF03 - FF03FF0310420000000000000000000000420042E07FE07FE07FE07F00420042 - 00000000000000000000000000001042FF03FF03FF03FF031042000000000000 - 0000000000400040007C007C007C007C00400040000000000000000000000000 - 0000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000100010001000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000100010001000000010421042104210421042104200000000000000000000 - 0000000000420042004200420000000000000000000000000000000000001042 - 1042104210421042104200000000000000000000000000000040004000400040 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000010001000000000000000000000000000000000000000 - 1042104210421042104210421042104210421042104200000000000000001000 - 1000000000000000000000000000000000001042104210421042104210421042 - 1042104210421042000000000000000000000000000000000000000000000000 - 0000000000001042104210421042104210421042104210421042104200000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000100010000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186310420000000000000000100010000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000010001000100010001000000000000000000000000000000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200001000100010001000 - 1000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007CFF7F007CFF7F00000000007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000100010000000100010000000 - 00000000000000000000000000001863FF7F1863FF7F1863FF7F000000001863 - FF7F186310420000100010000000100010000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F007CFF7F - 007C00000000FF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000010001000000010001000000000000000000000000000000000001863 - 1863FF7F1863FF7F186300000000FF7F18631863104200001000100000001000 - 1000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007C0000007C000000000000007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000100010000000100010000000 - 00000000000000000000000000001863FF7F1863000018630000000000001863 - FF7F186310420000100010000000100010000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000000000000000000000000000000000000000000000000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200000000000000000000 - 0000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007C000000000000007CFF7F007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000000010001000100000000000 - 00000000000000000000000000001863FF7F18630000000000001863FF7F1863 - FF7F186310420000000010001000100000000000000000000000000000000000 - 00001042007CFF7F007CFF7F007CFF7F007CFF7F007C10420000000000000000 - 000000000000000000000000000000000000000000001042007CFF7F00000000 - 00000000007CFF7F007C10420000000000000000000000000000000000000000 - 0000000000000000000010421863FF7F1863FF7F1863FF7F1863FF7F18631042 - 0000000010001000000010001000000000000000000000000000000000001863 - 1863FF7F00000000000000001863FF7F18631863104200001000100000001000 - 1000000000000000000000000000000000001042FF7F007CFF7F007CFF7F007C - FF7F007CFF7F1042000000000000000000000000000000000000000000000000 - 0000000000001042FF7F007CFF7F007CFF7F007CFF7F007CFF7F104200000000 - 00000000000000000000000000000000000000000000000000001042FF7F1863 - FF7F1863FF7F1863FF7F1863FF7F104200000000100010000000100010000000 - 00000000000000000000000000001863FF7F1863FF7F1863FF7F1863FF7F1863 - FF7F186310420000100010000000100010000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000010001000100010000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863104200001000100010001000 - 0000000000000000000000000000000000001042FF03FF03FF03FF03FF03FF03 - FF03FF03FF031042000000000000000000000000000000000000000000000000 - 0000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF03104200000000 - 00000000000000000000000000000000000000000000000000001042FF03FF03 - FF03FF03FF03FF03FF03FF03FF03104200000000100010000000000000000000 - 00000000000000000000000000001863FF03FF7FFF03FF7FFF03FF7FFF03FF7F - FF03186310420000100010000000000000000000000000000000000000000000 - 0000104210421042104210421042104210421042104210420000000000000000 - 0000000000000000000000000000000000000000000010421042104210421042 - 1042104210421042104210420000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000001000100010000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863000000000000100010001000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000E07FE07F - E07FE07F00000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000007C007C007C007C0000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000010421042104210421042104210421042 - 1042104210420000000000000000000000000000000000000000000000000000 - 0000000000000000E07FE07FE07F00000000E07FE07FE07F0000000000000000 - 00000000000000000000000000000000000000000000000000000000007C007C - 007C00000000007C007C007C0000000000000000000000000000000000000000 - 0000000000000000000010421042104210421042104210421042104210421042 - 0000000000000000000000000000000000000000000000000000000000001863 - 1863186318631863186318631863186318631863104200000000000000000000 - 00000000000000000000000000000000000000000042E07FE07FE07FE07F0000 - 0000E07FE07FE07FE07F00000000000000000000000000000000000000000000 - 00000000000000000040007C007C007C007C00000000007C007C007C007C0000 - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F1863FF7F186300000000FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 000000000042E07FE07FE07FE07FE07FE07FE07FE07FE07FE07F000000000000 - 0000000000000000000000000000000000000000000000000040007C007C007C - 007C007C007C007C007C007C007C000000000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F1863FF7F1863FF7F000000001863FF7F1863104200000000000000000000 - 0000000000000000000000000000000000000042E07FE07FE07FE07FE07F0000 - 0000E07FE07FE07FE07FE07F0000000000000000000000000000000000000000 - 0000000000000040007C007C007C007C007C00400040007C007C007C007C007C - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F1863FF7F186300000000FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 00000042E07FE07FE07FE07FE07F00000000E07FE07FE07FE07FE07F00000000 - 000000000000000000000000000000000000000000000040007C007C007C007C - 007C00000000007C007C007C007C007C00000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F1863000018630000000000001863FF7F1863104200000000000000000000 - 0000000000000000000000000000000000000042E07FE07FE07FE07FE07FE07F - 00000000E07FE07FE07FE07F0000000000000000000000000000000000000000 - 0000000000000040007C007C007C007C007C00000000007C007C007C007C007C - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F00000000000000001863FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 00000042E07FE07FE07FE07FE07FE07FE07F00000000E07FE07FE07F00000000 - 000000000000000000000000000000000000000000000040007C007C007C007C - 0040000000000040007C007C007C007C00000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F18630000000000001863FF7F1863FF7F1863104200000000000000000000 - 00000000000000000000000000000000000000000042E07FE07F00000000E07F - E07F00000000E07FE07F00000000000000000000000000000000000000000000 - 00000000000000000040007C007C007C0040000000000040007C007C007C0000 - 000000000000000000000000000000000000000000000000000010421863FF7F - 1863FF7F1863FF7F1863FF7F1863104200000000000000000000000000000000 - 000000000000000000000000000018631863FF7F00000000000000001863FF7F - 1863186310420000000000000000000000000000000000000000000000000000 - 000000000042E07FE07F000000000000000000000000E07FE07F000000000000 - 0000000000000000000000000000000000000000000000000040007C007C007C - 0040000000000040007C007C007C000000000000000000000000000000000000 - 000000000000000000001042FF7F1863FF7F1863FF7F1863FF7F1863FF7F1042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF7F1863FF7F1863FF7F1863FF7F1863FF7F1863104200000000000000000000 - 000000000000000000000000000000000000000000000042E07FE07F00000000 - 00000000E07FE07F000000000000000000000000000000000000000000000000 - 000000000000000000000040007C007C007C00000000007C007C007C00000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186310420000000000000000000000000000000000000000000000000000 - 000000000000000000420042E07FE07FE07FE07F004200420000000000000000 - 0000000000000000000000000000000000000000000000000000000000400040 - 007C007C007C007C004000400000000000000000000000000000000000000000 - 000000000000000000001042FF03FF03FF03FF03FF03FF03FF03FF03FF031042 - 0000000000000000000000000000000000000000000000000000000000001863 - FF03FF7FFF03FF7FFF03FF7FFF03FF7FFF031863104200000000000000000000 - 0000000000000000000000000000000000000000000000000000000000420042 - 0042004200000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000400040004000400000000000000000 - 0000000000000000000000000000000000000000000000000000104210421042 - 1042104210421042104210421042104200000000000000000000000000000000 - 0000000000000000000000000000186318631863186318631863186318631863 - 1863186300000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000424D3E000000000000003E0000002800000068000000C300000001000100 - 00000000300C00000000000000000000000000000000000000000000FFFFFF00 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000F7800FFDE003CF7800FFDE003C000000 - FF000FFFC003CFF000FFFC003C000000F7000FFDC0020F7000FFDC0020000000 - BE000FEF80024BE000FEF80024000000C1000FF040024C1000FF040024000000 - C1000FF040024C1000FF04002400000041000FD04003F41000FD04003F000000 - C1000FF040031C1000FF040031000000C1000FF040024C1000FF040024000000 - BE000FEF80024BE000FEF80024000000F7000FFDC0021F7000FFDC0021000000 - FF000FFFC0027FF000FFFC0027000000F7001FFDC0071F7001FFDC0071000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - F7800F3DE003CF7800F3DE003C000000FF000F3FC003CFF000F3FC003C000000 - F700083DC0020F700083DC0020000000BE00092F80024BE00092F80024000000 - C100093040024C100093040024000000C100093040024C100093040024000000 - 41000FD04003F41000FD04003F000000C1000C7040031C1000C7040031000000 - C100093040024C100093040024000000BE00092F80024BE00092F80024000000 - F700087DC0021F700087DC0021000000FF0009FFC0027FF0009FFC0027000000 - F7001C7DC0071F7001C7DC0071000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000F7800FFDE003FF7800FFDE003F000000 - FF000FFFC003FFF000FFFC003F000000F7000FFDC003FF7000FFDC003F000000 - BE000FEF8003FBE000FEF8003F000000C1000FF04003FC1000FF04003F000000 - C1000FF04003FC1000FF04003F00000041000FD04003F41000FD04003F000000 - C1000FF04003FC1000FF04003F000000C1000FF04003FC1000FF04003F000000 - BE000FEF8003FBE000FEF8003F000000F7000FFDC003FF7000FFDC003F000000 - FF000FFFC003FFF000FFFC003F000000F7001FFDC007FF7001FFDC007F000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFF87FFFFE1FF000000 - FF800F3FE003CF7E01FFDF807F00000001000F004003CFFC00FFFF003F000000 - 0100080040020F78007FDE001F0000000100090040024BE8007EFA001F000000 - 0100090040024C10003F04000F00000083000920C0024C10003F04000F000000 - C7000FF1C003F410003D04000F000000C7000C71C0031C10003F04000F000000 - 83000920C0024C18007F06001F0000000100090040024BE8007EFA001F000000 - 0100084040021F7C00FFDF003F000000010009C040027FFE01FFFF807F000000 - 01001C4040071F7F87FFDFE1FF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF800FFFE003FFF800F3FE003C000000 - 01000FC04003F01000F004003C00000001000FC04003F0100080040020000000 - 01000FC04003F010009004002400000001000FC04003F0100090040024000000 - 83000FE0C003F83000920C0024000000C7000FF1C003FC7000FF1C003F000000 - C7000FF1C003FC7000C71C003100000083000FE0C003F83000920C0024000000 - 01000FC04003F010009004002400000001000FC04003F0100084040021000000 - 01000FC04003F010009C04002700000001001FC04007F01001C4040071000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFF87FFFFE1FFFFFFFFFFFFFFF000000 - 01E01FC07807FFF800FFFE003F00000001C00FC07003F01000FC04003F000000 - 018007C06001F01000FC04003F000000018007C06001F01000FC04003F000000 - 830003E0C000F01000FC04003F000000C70003F1C000F83000FE0C003F000000 - C70003F1C000FC7000FF1C003F000000830003E0C000FC7000FF1C003F000000 - 018007C06001F83000FE0C003F000000018007C06001F01000FC04003F000000 - 01C00FC07003F01000FC04003F00000001E01FC07807F01000FC04003F000000 - FFF87FFFFE1FF01001FC04007F000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FB800F3EE003CFB800F3EE003C000000 - F9000F3E4003CF9000F3E4003C00000080000820000208000082000020000000 - B900092E40024B900092E40024000000BB00092EC0024BB00092EC0024000000 - DF000937C0024DF000937C002400000081000FE04003F81000FE04003F000000 - 01000C404003101000C404003100000001000900400240100090040024000000 - 0100090040024010009004002400000001000840400210100084040021000000 - 010009C040027010009C04002700000003001C40C007103001C40C0071000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FB800FFEE003FFB800FFEE003F000000F9000FFE4003FF9000FFE4003F000000 - 80000FE00003F80000FE00003F000000B9000FEE4003FB9000FEE4003F000000 - BB000FEEC003FBB000FEEC003F000000DF000FF7C003FDF000FF7C003F000000 - 81000FE04003F81000FE04003F00000001000FC04003F01000FC04003F000000 - 01000FC04003F01000FC04003F00000001000FC04003F01000FC04003F000000 - 01000FC04003F01000FC04003F00000001000FC04003F01000FC04003F000000 - 03001FC0C007F03001FC0C007F000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFFFFFFFFFFFFFFF87FFFFE1FF000000FF800F3FE003CFBE01FFEF807F000000 - FF000F3FC003CF9C00FFE7003F000000FF00083FC0020808007E02001F000000 - FF00093FC0024B98007EE6001F000000FF00093FC0024BB0003EEC000F000000 - FF00093FC0024DF0003F7C000F000000FF000FFFC003F810003E04000F000000 - FF000C7FC0031010003C04000F000000FF00093FC0024018007C06001F000000 - FF00093FC0024018007C06001F000000FF00087FC002101C00FC07003F000000 - FF0009FFC002701E01FC07807F000000FF001C7FC007103F87FC0FE1FF000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FF800FFFE003FFF800F3FE003C000000FF000FFFC003FFF000F3FC003C000000 - FF000FFFC003FFF00083FC0020000000FF000FFFC003FFF00093FC0024000000 - FF000FFFC003FFF00093FC0024000000FF000FFFC003FFF00093FC0024000000 - FF000FFFC003FFF000FFFC003F000000FF000FFFC003FFF000C7FC0031000000 - FF000FFFC003FFF00093FC0024000000FF000FFFC003FFF00093FC0024000000 - FF000FFFC003FFF00087FC0021000000FF000FFFC003FFF0009FFC0027000000 - FF001FFFC007FFF001C7FC0071000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000 - FFF87FFFFE1FFFFFFFFFFFFFFF000000FFE01FFFF807FFF800FFFE003F000000 - FFC00FFFF003FFF000FFFC003F000000FF8007FFE001FFF000FFFC003F000000 - FF8007FFE001FFF000FFFC003F000000FF0003FFC000FFF000FFFC003F000000 - FF0003FFC000FFF000FFFC003F000000FF0003FFC000FFF000FFFC003F000000 - FF0003FFC000FFF000FFFC003F000000FF8007FFE001FFF000FFFC003F000000 - FF8007FFE001FFF000FFFC003F000000FFC00FFFF003FFF000FFFC003F000000 - FFE01FFFF807FFF000FFFC003F000000FFF87FFFFE1FFFF001FFFC007F000000 - FFFFFFFFFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000 - 000000000000} - end -end diff --git a/outils/CE explorer/unit1.h b/outils/CE explorer/unit1.h deleted file mode 100644 index bf02fa7..0000000 --- a/outils/CE explorer/unit1.h +++ /dev/null @@ -1,37 +0,0 @@ -//--------------------------------------------------------------------------- - -#ifndef Unit1H -#define Unit1H -//--------------------------------------------------------------------------- -#include -#include -#include -#include -#include -#include -#include -#include -//--------------------------------------------------------------------------- -class TForm1 : public TForm -{ -__published: // IDE-managed Components - TMainMenu *MainMenu1; - TMenuItem *Fichier1; - TMenuItem *Ouvrir1; - TOpenDialog *OpenDialog; - TTreeView *TreeView; - TImageList *ImageList; - TMenuItem *N1; - TMenuItem *Quitter1; - TRichEdit *RichEdit1; - void __fastcall Ouvrir1Click(TObject *Sender); - void __fastcall Quitter1Click(TObject *Sender); -private: // User declarations -public: // User declarations - __fastcall TForm1(TComponent* Owner); -}; -//--------------------------------------------------------------------------- -extern PACKAGE TForm1 *Form1; -//--------------------------------------------------------------------------- -#endif - \ No newline at end of file diff --git a/outils/compression/rip.asm b/outils/compression/rip.asm deleted file mode 100644 index acefad7..0000000 --- a/outils/compression/rip.asm +++ /dev/null @@ -1,108 +0,0 @@ -net segment - -org 0100h -assume cs:net,ds:net - -start: -jmp deb -taille dw 0 -signe db 'rip' -signe2 db 64 dup (0) -p1 db '@' -p2 db '@' -min db 4 -deb: -mov BL,DS:[0080h] -xor BH,BH -or BX,BX -mov byte ptr [0081h+BX],00h -mov AX,3D02h -mov DX,0082H -int 21h -mov bx,ax -mov ah,3fh -mov cx,0ffffh -mov dx,offset data -int 21h -mov taille,ax -mov ah,3eh -int 21h -mov si,82h -mov di,offset signe2 -mov cx,64 -rep movsb -mov di,offset signe2 -mov cx,64 -mov al,2eh -repne scasb -push di -mov si,di -mov di,offset data -add di,taille -mov cx,3 -rep movsb -mov ax,di -pop di -mov cx,3 -mov si,offset signe -rep movsb -mov di,ax -mov cx,taille -mov si,offset data -mov dx,1 -boucle: -lodsb -cmp al,[si] -jne pas -inc dl -loop boucle -jmp fin -pas: -cmp dl,min -jb suite -cmp dl,1 -jne go -suite: -mov bx,cx -mov cx,dx -rep stosb -mov cx,bx -mov dl,1 -loop boucle -jmp fin -go: -mov ah,al -mov al,p1 -stosb -mov al,dl -stosb -mov al,ah -stosb -mov al,p2 -stosb -mov dl,1 -loop boucle -fin: -mov ah,3ch -mov cx,0 -mov dx,offset signe2 -int 21h -mov bx,ax -mov ah,40h -mov cx,di -sub cx,offset data -sub cx,taille -mov dx,offset data -add dx,taille -int 21h -mov ah,3eh -int 21h -mov ah,41h -mov dx,82h -int 21h -ret -data db 0 -net ends -end start - -net \ No newline at end of file diff --git a/outils/compression/unrip.asm b/outils/compression/unrip.asm deleted file mode 100644 index 02d1f64..0000000 --- a/outils/compression/unrip.asm +++ /dev/null @@ -1,88 +0,0 @@ -net segment - -org 0100h -assume cs:net,ds:net - -start: -jmp deb -taille dw 0 -signe2 db 64 dup (0) -p1 db '@' -p2 db '@' -deb: -mov BL,DS:[0080h] -xor BH,BH -or BX,BX -mov byte ptr [0081h+BX],00h -mov AX,3D02h -mov DX,0082H -int 21h -mov bx,ax -mov ah,3fh -mov cx,0ffffh -mov dx,offset data -int 21h -mov taille,ax -mov ah,3eh -int 21h -mov si,82h -mov di,offset signe2 -mov cx,64 -rep movsb -mov di,offset signe2 -mov cx,64 -mov al,2eh -repne scasb -mov si,offset data -mov cx,3 -rep movsb -mov cx,taille -mov di,offset data -add di,taille -mov dx,1 -boucle: -lodsb -cmp al,p1 -je pas -suite: -stosb -loop boucle -jmp fin -pas: -mov al,p2 -cmp [si+2],al -jne suite -lodsb -mov bx,cx -mov cl,al -xor ch,ch -lodsb -rep stosb -mov cx,bx -sub cx,3 -inc si -loop boucle -fin: -mov ah,3ch -mov cx,0 -mov dx,offset signe2 -int 21h -mov bx,ax -mov ah,40h -mov cx,di -sub cx,offset data -sub cx,taille -mov dx,offset data -add dx,taille -int 21h -mov ah,3eh -int 21h -mov ah,41h -mov dx,82h -int 21h -ret -data db 0 -net ends -end start - -net \ No newline at end of file diff --git a/programs/MAKEFILE b/programs/MAKEFILE deleted file mode 100644 index 46a0203..0000000 --- a/programs/MAKEFILE +++ /dev/null @@ -1,23 +0,0 @@ -asm= lzasm /z/t -lnk= elink - -all: exem-lib.lib exem-ce.ce pmode.ce isa.ce editeur.ce volume.ce test.ce verifier.ce gestion.ce logo.ce souris.ce - -.asm.obj: - $(asm) $< - -.obj.ce: - $(lnk) $< $*.ce - -.obj.lib: - $(lnk) $< $*.lib - -clean: - del *.obj - del *.ce - del *.bak - del *.lib - del *.com - del *.bin - del *.sys - del *.err diff --git a/programs/cos.rip b/programs/cos.rip deleted file mode 100644 index f9e2076..0000000 Binary files a/programs/cos.rip and /dev/null differ diff --git a/programs/editeur.asm b/programs/editeur.asm deleted file mode 100644 index 89ad446..0000000 --- a/programs/editeur.asm +++ /dev/null @@ -1,355 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\graphic.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: -mov ax,0305h -mov bx,0008h -int 16h -call [savestate] -call [setvideomode],2 -xor ebp,ebp -xor ax,ax -mov fs,ax -call [disablescroll] -adres: -call [saveparamto],offset infos -mov al,[infos.lines] -dec al -mov [lastline],al -mov al,[infos.columns] -sub al,16 -mov bl,al -shr al,2 -mov [sizex],al -and bl,11b -mov [sizex2],bl -mov al,[infos.mode] -cmp al,[oldmode] -je noinit -call [clearscreen] -mov [oldmode],al -noinit: -call [setxy],0,0 -mov edi,ebp -mov bh,[lastline] -lines: -xor edx,edx -mov dx,di -push edx -mov edx,edi -shr edx,4*4 -shl edx,4*3 -push edx -push offset spaces -call [print] -mov dx,di -mov al,[sizex] -mov esi,edi -doaline: -mov edx,edi -shr edx,4*4 -shl edx,4*3 -mov fs,dx -push [dword ptr fs:di] -push 8 -call [showhex] -call [showchar],' ' -inc edi -dec al -jnz doaline -mov edi,esi -push offset spaces2 -call [print] -mov al,[sizex] -doaline2: -mov edx,edi -shr edx,4*4 -shl edx,4*3 -mov fs,dx -push [word ptr fs:di] -call [showchar] -inc edi -dec al -jnz doaline2 -dec bh -je outes -cmp [sizex2],0 -je lines -call [addline] -jmp lines -outes: -call [setxy],0,[word ptr lastline] -call [print],offset menu -waitkey: -mov ax,0 -int 16h -cmp ax,3B00h -jne suit -inc ebp -jmp adres -suit: -cmp ax,3C00h -jne suit2 -dec ebp -jmp adres -suit2: -cmp ax,3D00h -jne suit3 -add ebp,24*16 -jmp adres -suit3: -cmp ax,3E00h -jne suit4 -sub ebp,24*16 -jmp adres -suit4: -cmp ax,3F00h -jne suit5 -add ebp,010000h -jmp adres -suit5: -cmp ax,4000h -jne suit6 -sub ebp,010000h -jmp adres -suit6: -cmp ax,4100h -jne suit7 -mov [dword ptr pope],'TIDE' -call [setxy],0,[word ptr lastline] -call [print],offset menu -mov ax,0B800h -mov es,ax -mov [xxyy2],3 -mov [xxyy],3 -call calc1 -call calc2 -waitst: -mov ax,0 -int 16h -cmp ah,41h -jne tre -mov [dword ptr pope],' EUV' -push cs -pop es -jmp adres -tre: -cmp al,0 -jne write -cmp ah,48h -jne tre1 -cmp [yy],0 -je waitst -dec [yy] -jmp cursor -tre1: -cmp ah,50h -jne tre2 -mov al,[lastline] -dec al -xor ah,ah -cmp [yy],ax -je waitst -inc [yy] -jmp cursor -tre2: -cmp ah,4Dh -jne tre4 -cmp [xx],15 -je waitst -inc [xx] -jmp cursor -tre4: -cmp ah,4Bh -jne waitst -cmp [xx],0 -je waitst -dec [xx] -jmp cursor -write: -call asciihex2dec -cmp cl,15 -ja waitst -call calc1 -call calc2 -mov edi,[es:bx-1] -mov dx,[es:si-1] -mov [byte ptr es:bx],0112 -mov [es:bx-1],al -writs: -mov ax,0 -int 16H -mov ch,cl -call asciihex2dec -cmp cl,15 -ja writs -shl ch,4 -add ch,cl -mov [es:bx+1],al -mov [es:si-1],ch -mov ax,bx -call calc3 -mov [gs:bx],ch -pusha -popa -mov cl,[gs:bx] -cmp ch,cl -je no -push si ax -call [setxy],0,[word ptr lastline] -call [print],offset msg -mov ax,0 -int 16h -call [setxy],0,[word ptr lastline] -call [print],offset menu -pop bx si -mov [es:bx-1],edi -mov [es:si-1],dx -no: -inc [xx] -cmp [xx],16 -jne pasde -inc [yy] -mov [xx],0h -pasde: -call calc1 -call calc2 -jmp waitst -cursor: -call calc1 -call calc2 -jmp waitst -suit7: -cmp ax,4200h -jne adres -call [restorestate] -retf -calc1: -push ax dx si -mov ax,[xx] -mov dx,[xx] -shl ax,2 -shl dx,1 -add ax,dx -add ax,27 -mov bx,[yy] -mov dx,[yy] -shl bx,5 -shl dx,7 -add bx,dx -add bx,ax -mov [byte ptr es:bx],112 -mov [byte ptr es:bx+2],112 -mov si,[xxyy] -mov [byte ptr es:si],07 -mov [byte ptr es:si+2],07 -mov [xxyy],bx -pop si dx ax -ret -calc2: -push ax bx dx -mov si,[yy] -mov dx,[yy] -shl si,5 -shl dx,7 -add si,dx -mov dx,[xx] -shl dx,1 -add si,dx -add si,129 -mov [byte ptr es:si],112 -mov bx,[xxyy2] -mov [byte ptr es:bx],07 -mov [xxyy2],si -pop dx bx ax -ret -calc3: -push dx -xor ebx,ebx -mov bx,[xx] -mov dx,[yy] -shl dx,4 -add bx,dx -add ebx,ebp -mov edx,ebx -shr edx,4*4 -shl edx,4*3 -mov gs,dx -pop dx -ret -asciihex2dec: -cmp al,'a' -jb nomin -cmp al,'f' -ja nomin -sub al,'a'-'A' -jmp ismaj -nomin: -cmp al,'A' -jb nomaj -cmp al,'F' -ja nomaj -ismaj: -mov cl,al -sub cl,'A'-10 -jmp endt -nomaj: -mov cl,al -sub cl,'0' -endt: -ret - -xx dw 0 -yy dw 0 -xxyy dw 3 -xxyy2 dw 3 - -lastline db 0 -sizex db 0 -sizex2 db 0 - -dep db ':',0 -msg db '\c74Erreur : zone non modifiable (ROM) pressez une touche pour continuer ',0 -menu db '\c70haut/bas [F1/2] Offset [F3/4] Segment [F5/6] Mode F7, Quitter F8 MODE ' -pope db 'VUE ',0 -spaces db '\c02%hW:%hW \c04| \c07',0 -spaces2 db '\c04 | \c07',0 - -showbuffer db 35 dup (0FFh) -oldmode db 0 -infos vgainf <> - -importing -use VIDEO,setvideomode -use VIDEO,savestate -use VIDEO,restorestate -use VIDEO,setxy -use VIDEO,addline -use VIDEO,saveparamto -use VIDEO,disablescroll -use VIDEO,clearscreen -use VIDEO.LIB,print -use VIDEO.LIB,showhex -use VIDEO.LIB,showchar -endi - - - - - - - - diff --git a/programs/exem-ce.asm b/programs/exem-ce.asm deleted file mode 100644 index 867d0d7..0000000 --- a/programs/exem-ce.asm +++ /dev/null @@ -1,26 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [print],offset message - call [waitkey] - retf - -message db 'Appel de la librairie \c02video\c07 et de la librairie \c02EXEM-LIB.LIB\c07 !',0 - -importing -use VIDEO.LIB,print -use EXEM-LIB.LIB,waitkey -endi diff --git a/programs/exem-lib.asm b/programs/exem-lib.asm deleted file mode 100644 index 0feaf4c..0000000 --- a/programs/exem-lib.asm +++ /dev/null @@ -1,24 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,offset exports,,,> - -waitkey: - mov ax,0 - int 16h - retf - -exporting - -declare waitkey -ende diff --git a/programs/gestion.asm b/programs/gestion.asm deleted file mode 100644 index 95de6ed..0000000 --- a/programs/gestion.asm +++ /dev/null @@ -1,117 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\fat.h" -include "..\include\divers.h" -include "..\include\graphic.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [saveparamto],offset infos - call [print],offset msg1 - call [initdrive] - xor bp,bp - call [findfirstfile],offset bufferentry - jc nofiles -go: - push [word bufferentry.result.fileattr] - push [bufferentry.result.filesize] - push [bufferentry.result.filetime] - push [bufferentry.result.filedate] - push [bufferentry.result.filetimecrea] - push [bufferentry.result.filedatecrea] - mov bx,offset bufferentry.result.filename - push bx - push offset line - call [print] - - call [findnextfile],offset bufferentry - jc nofiles - inc bp - jmp go -nofiles: - call [print],offset menu - mov [xx],1 - call changelineattr,[xx],112 -endof: - mov ax,0 - int 16h - cmp ah,50h - jne tre1 - cmp [xx],bp - ja endof - call changelineattr,[xx],7 - inc [xx] - call changelineattr,[xx],112 - jmp endof -tre1: - cmp ah,48h - jne tre2 - cmp [xx],1 - je endof - call changelineattr,[xx],7 - dec [xx] - call changelineattr,[xx],112 - jmp endof -tre2: - cmp al,0Dh - jne tre3 -tre3: - cmp ah,59 - jne tre4 - jmp realstart -tre4: - cmp ah,67 - jne endof - retf - -;couleur al pour ligne %0 en %1 -PROC changelineattr near -USES ax,bx,di,es -ARG @line:word,@attr:word -mov ax,0B800h -mov es,ax -mov ax,[@line] -add ax,3 -mul [cs:infos.columns] -mov di,ax -shl di,1 -mov al,[cs:infos.columns] -inc di -mov bx,[@attr] -@@popep: -mov [es:di],bl -add di,2 -dec al -jnz @@popep -ret -endp changelineattr - -xx dw 1 -xxold dw 0 -menu db '\c70 [F1] Lire disque [F9] Quitter \c07',0 -msg1 db '\e\g00,00\c70 Gestionnaire de fichier Version 1.5 ' - db '\g00,01\c07--------------------------------------------------------------------------------' - db '\g00,02Nom Ext. Date creation Date modification Taille Attributs' - db '\g00,03-------------------------------------------------------------------------------\l',0 -line db '\c07%n %d %t %d %t %z %a\l',0 -bufferentry find <> -infos vgainf <> - -importing -use VIDEO.LIB,print -use VIDEO,saveparamto -use DISQUE,initdrive -use DISQUE,findfirstfile -use DISQUE,findnextfile -endi - diff --git a/programs/isa.asm b/programs/isa.asm deleted file mode 100644 index f3e7e9c..0000000 --- a/programs/isa.asm +++ /dev/null @@ -1,46 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,,,offset realstart> - -realstart: -retf - -PNP_ADR_PORT equ 0x279 -PNP_WRITE_PORT equ 0xA79 -;MIN and MAX READ_ADDR must have the bottom two bits set -MIN_READ_ADDR equ 0x203 -MAX_READ_ADDR equ 0x3FF -;READ_ADDR_STEP must be a multiple of 4 -READ_ADDR_STEP equ 8 - -;bits -CONFIG_WAIT_FOR_KEY equ 0x02 -CONFIG_RESET_CSN equ 0x04 -IDENT_LEN equ 9 - -;renvoie le timer en ax -ctc: - cli - mov dx,043h - mov al,0 - out dx,al - mov dx,40h - in al,dx - mov ah,al - in al,dx - sti - ret - -;attend pendant ax microsecondes -usleep: diff --git a/programs/logo.asm b/programs/logo.asm deleted file mode 100644 index 5e5a0da..0000000 --- a/programs/logo.asm +++ /dev/null @@ -1,91 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [cs:mballoc],65535 - jc problem3 - push ax - pop es - call [cs:projfile],offset logo - jc problem - mov ecx,eax - call [cs:mbfind],offset logo - jc problem - call [cs:decompressrle],ax,0,es,0,cx - jc problem2 - push es - pop ds - call [cs:savestate] - call [cs:setvideomode],word 8 - call [cs:clearscreen] - call [cs:loadbmppalet],word 0 - call [cs:showbmp],word 0,word 20,word 150 - jc problem4 - push cs - pop ds - call [cs:print],offset poper -endofit: - xor ax,ax - int 16h - call [cs:restorestate] - retf - -problem: - push cs - pop ds - call [cs:print],offset error - jmp endofit - -problem2: - push cs - pop ds - call [cs:print],offset error2 - jmp endofit - -problem3: - push cs - pop ds - call [cs:print],offset error3 - jmp endofit - -problem4: - push cs - pop ds - call [cs:print],offset error4 - jmp endofit - -poper db '\c0BC\c0CO\c0DS\c0E2\c0E0\c0E0\c0F0 en mode graphique',0 -logo db 'COS.RIP',0 -ok1 db 'Chargement de l''image OK',0 -ok2 db 'Decompression de l''image OK',0 -error3 db '\c04Une erreur est apparue lors de l''allocation de mémoire',0 -error db '\c04Une erreur est apparue lors du chargement de l''image',0 -error2 db '\c04Une erreur est apparue lors de la decompression de l''image',0 -error4 db '\c0FUne erreur est apparue lors de l''affichage de l''image',0 - - -importing -use VIDEO,restorestate -use VIDEO,savestate -use VIDEO,setvideomode -use VIDEO,clearscreen -use DISQUE,decompressrle -use DISQUE,projfile -use SYSTEME,mbfind -use SYSTEME,mballoc -use VIDEO.LIB,print -use BMP.LIB,showbmp -use BMP.LIB,loadbmppalet -endi diff --git a/programs/lpt/com.asm b/programs/lpt/com.asm deleted file mode 100644 index 4c83399..0000000 --- a/programs/lpt/com.asm +++ /dev/null @@ -1,471 +0,0 @@ -.model tiny -.486 -smart -.code -org 0100h -start: -;call setemettor -call getfirstlpt -call initlpt -call receivecommand -ret - - - -gogo db 'Salut' -gotoz db 23 dup (0) - -;Re‡ois une commande et l'execute -Receivecommand: -push ax bx cx di es -push cs -pop es -mov di,offset command -call receivelptblock -mov bl,al -xor bh,bh -shl bx,1 -add bx,offset cmd -call [bx] -pop es di cx ax -ret -command db 25 dup (0) -cmd dw nothings - dw sendram - -nothings: -ret - -Sendram: -push ax cx si ds -mov ax,es:[di] -mov si,ax -mov ax,es:[di+2] -mov ds,ax -mov cx,es:[di+2] -call sendlptblock -pop ds si cx ax -ret - - -;---------Segment Adress----------- -Bios equ 040h -;---------Offset Adress------------ -Lptadr equ 008h -Timer equ 06Ch -;---------Constant----------------- -onesec equ 18 -tensec equ 182 -Ack equ 00 -Nack equ 0FFh -maxtry equ 10 -tokenstart equ 0 -tokennext equ 1 -tokenstop equ 2 -tokenbad equ 3 -tokenresend equ 4 - - -Initlpt: -push ax ecx -call StartTimer -cmp emettor,0 -je receptinit -mov al,10000b -call SetLptOut -waitinit1: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz waitinit1 -jmp endinit -receptinit: -call EndTimer -cmp cx,cs:timeout -ja errorinit -call getlptIn -cmp al,00000b -jnz receptinit -mov al,10000b -call SetLptOut -endinit: -clc -pop ecx ax -ret -errorinit: -stc -pop ecx ax -ret - - -;-Envoie DL (dh) JNE si problŠme JNC error timeout -Sendlpt: -push ax bx ecx -call StartTimer -mov dh,dl -mov al,dl -and al,0Fh -call SetLptOut -waitSend: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jnc waitsend -and al,0Fh -mov bl,al -call StartTimer ;///// -mov al,dh -shr al,4 -or al,10000b -call SetLptOut -waitSend2: -call EndTimer -cmp cx,cs:timeout -ja errorsend -call getlptIn -bt ax,4 -jc waitsend2 -and al,0Fh -shl al,4 -add bl,al -cmp dl,bl -pop ecx bx ax -clc -ret -errorsend: -pop ecx bx ax -stc -ret - - -;-Re‡ois DL (dh) -Receivelpt: -push ax bx ecx -call StartTimer -waitreceive: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jnc waitreceive -and al,0Fh -mov dl,al -call SetLptOut -call StartTimer ;///// -waitreceive2: -call EndTimer -cmp cx,cs:timeout -ja errorreceive -call getlptIn -bt ax,4 -jc waitreceive2 -and al,0Fh -mov dh,al -shl dh,4 -add dl,dh -or al,10000b -call SetlptOut -clc -pop ecx bx ax -ret -errorreceive: -stc -pop ecx bx ax -ret - -;-AX -SetTimeout: -mov cs:Timeout,ax -ret - -timeout dw tensec - -getTimeout: -mov ax,cs:Timeout -ret - -SetEmettor: -mov cs:Emettor,1 -ret - -Emettor db 0 - -SetReceptor: -mov cs:Emettor,0 -ret - -;->bx Nøport->Adresse dx -GetLpt: -push ax bx ds -mov ax,bios -mov ds,ax -dec bx -shl bx,1 -mov dx,ds:[Lptadr+bx] -mov cs:lpt,dx -pop ds bx ax -ret -lpt dw 0 - -;->bx Nøport->Adresse dx -GetFirstLpt: -push ax ds -mov ax,bios -mov ds,ax -xor bx,bx -findlpt: -mov dx,ds:[Lptadr+bx] -cmp dx,0 -jne oklpt -add bx,2 -cmp bx,4 -jbe findlpt -oklpt: -mov cs:lpt,dx -pop ds ax -ret - -;-> -StartTimer: -push ax ecx ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -mov times,ecx -pop ds ecx ax -ret -times dd 0 - -;->Ecx time elapsed -EndTimer: -push ax ds -mov ax,Bios -mov ds,ax -mov ecx,ds:[timer] -sub ecx,times -mov ecx,0 -pop ds ax -ret - -;-> -GetLptOut: -push dx -mov dx,lpt -in al,dx -pop dx -ret - -GetLptIn: -push dx -mov dx,lpt -inc dx -in al,dx -shr al,3 -pop dx -ret - -GetLptInOut: -push dx -mov dx,lpt -add dx,2 -in al,dx -and al,11111b -pop dx -ret - -SetLptOut: -push dx -mov dx,lpt -out dx,al -pop dx -ret - -SetLptIn: -push dx -mov dx,lpt -inc dx -out dx,al -pop dx -ret - -SetLptInOut: -push dx -mov dx,lpt -add dx,2 -out dx,al -pop dx -ret - -;R‚alise un checksum 8 bits sur donn‚es DS:SI, nb CX r‚sultat dans dl -Checksum8: -push cx si -check: -add dl,[si] -inc si -dec cx -jnz check -pop si cx -ret - -;DS:SI pointeur sur donn‚es, CX nombres de donn‚es, AL token -SendLptBlock: -push ax bx cx edx si edi bp -mov dx,cx -shl edx,16 -mov dh,al -call checksum8 -mov edi,edx -xor dh,dh -mov bp,dx -mov ah,maxtry -retry: -mov bl,4 -xor al,al -header: -mov dx,di -call sendlpt -setne al -jc outt -rol edi,8 -dec bl -jnz header -cmp al,0 -jne notgood -mov dl,ACK -jmp allsend -notgood: -mov dl,NACK -allsend: -call sendlpt -setne al -jc outt -cmp al,0 -je okheader -dec ah -jnz retry -jmp outt -okheader: -cmp cx,0 -je endoftrans -mov di,maxtry -retry2: -mov bx,cx -xor ax,ax -body: -mov dl,[si+bx-1] -add ah,dl -call sendlpt -setne al -jc outt -dec bx -jnz body -cmp al,0 -jne notgood2 -mov dl,ACK -jmp allisend -notgood2: -mov dl,NACK -allisend: -call sendlpt -setne al -jc outt -cmp al,0 -je endoftrans -dec di -jnz retry2 -outt: -stc -endoftrans: -mov al,ah -xor ah,ah -cmp bp,ax -pop bp edi si edx cx bx ax -ret - -;Receptionne en es:di les donn‚es au nombres de CX token AL (AH) (ECX) -receiveLptBlock: -push ax bx dx si bp -mov ah,maxtry -retrye: -mov bl,4 -headere: -call receivelpt -jc outte -mov cl,dl -rol ecx,8 -dec bl -jnz headere -call receivelpt -jc outte -cmp dl,ACK -je okheadere -dec ah -jnz retrye -jmp outte -okheadere: -mov al,ch -xor ch,ch -mov bp,cx -rol ecx,16 -cmp cx,0 -je endoftranse -mov si,maxtry -retrye2: -mov bx,cx -xor ah,ah -bodye: -call receivelpt -jc outte -mov es:[di+bx-1],dl -add ah,dl -dec bx -jnz bodye -call receivelpt -jc outte -cmp dl,ACK -je endoftranse -dec si -jnz retrye2 -outte: -stc -endoftranse: -mov bl,ah -xor bh,bh -cmp bp,bx -pop bp si dx bx ax -ret - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -end start; diff --git a/programs/lpt/project1.dpr b/programs/lpt/project1.dpr deleted file mode 100644 index a771b7e..0000000 --- a/programs/lpt/project1.dpr +++ /dev/null @@ -1,12 +0,0 @@ -program Project1; - -uses - Forms, - Unit1 in 'UNIT1.PAS' {Form1}; - -{$R *.RES} - -begin - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/programs/lpt/project1.opt b/programs/lpt/project1.opt deleted file mode 100644 index 8ebc76c..0000000 --- a/programs/lpt/project1.opt +++ /dev/null @@ -1,34 +0,0 @@ -[Compiler] -A=1 -B=0 -D=1 -F=0 -I=1 -K=1 -L=1 -P=1 -Q=0 -R=0 -S=1 -T=0 -U=1 -V=1 -W=0 -X=1 -Y=1 - -[Linker] -MapFile=0 -LinkBuffer=0 -DebugInfo=0 -OptimizeExe=0 -StackSize=16384 -HeapSize=8192 - -[Directories] -OutputDir= -SearchPath= -Conditionals= - -[Parameters] -RunParams= diff --git a/programs/lpt/project1.res b/programs/lpt/project1.res deleted file mode 100644 index ab74376..0000000 Binary files a/programs/lpt/project1.res and /dev/null differ diff --git a/programs/lpt/unit1.dcu b/programs/lpt/unit1.dcu deleted file mode 100644 index ab1d6e8..0000000 Binary files a/programs/lpt/unit1.dcu and /dev/null differ diff --git a/programs/lpt/unit1.dfm b/programs/lpt/unit1.dfm deleted file mode 100644 index 8faee1a..0000000 Binary files a/programs/lpt/unit1.dfm and /dev/null differ diff --git a/programs/lpt/unit1.pas b/programs/lpt/unit1.pas deleted file mode 100644 index d3a6687..0000000 --- a/programs/lpt/unit1.pas +++ /dev/null @@ -1,517 +0,0 @@ -unit Unit1; - -interface - -uses - SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, - Forms, Dialogs, StdCtrls, Grids, Outline, DirOutln, FileCtrl, Buttons, - Gauges, ExtCtrls, Spin, Mask; - -type - TForm1 = class(TForm) - DriveComboBox1: TDriveComboBox; - FilterComboBox1: TFilterComboBox; - FileListBox1: TFileListBox; - DirectoryListBox1: TDirectoryListBox; - SpeedButton1: TSpeedButton; - SpeedButton2: TSpeedButton; - Memo1: TMemo; - Memo2: TMemo; - Memo3: TMemo; - SpeedButton3: TSpeedButton; - SpeedButton4: TSpeedButton; - Gauge1: TGauge; - SpeedButton5: TSpeedButton; - SpeedButton6: TSpeedButton; - SpinButton1: TSpinButton; - MaskEdit1: TMaskEdit; - SpeedButton8: TSpeedButton; - SpinButton2: TSpinButton; - okm: TCheckBox; - Label1: TLabel; - procedure FormActivate(Sender: TObject); - procedure SpinButton1DownClick(Sender: TObject); - procedure SpinButton1UpClick(Sender: TObject); - procedure showadress(Sender: TObject); - procedure SpeedButton6Click(Sender: TObject); - procedure SpeedButton8Click(Sender: TObject); - procedure MaskEdit1Change(Sender: TObject); - procedure SpinButton2DownClick(Sender: TObject); - procedure SpinButton2UpClick(Sender: TObject); - procedure SpeedButton3Click(Sender: TObject); - procedure Memo2Click(Sender: TObject); - - private - { Private-déclarations } - public - { Public-déclarations } - end; - -const UNESEC = 1000; - DIXSEC = 4000; - ACK = $00; - NAK = $FF; - MAXTRY = 5; - -type DBloc = array[ 1..15534 ] of byte; -type BHEADER = record - case boolean of - true : ( Checksum:byte; - Lenb : byte; - Lenh : byte; - Token : byte; - - ); - false : ( Champ : array[ 0..3 ] of byte ); - end; - -var - Form1: TForm1; - Inlpt : word; - Outlpt : word; - times : longint; - Block : DBLOC; - adress :longint; - errors: boolean; - reste:integer; - pop:boolean; - -implementation - -{$R *.DFM} - -function Getlpt( Number : integer ) : boolean; -begin - Outlpt := MemW[ $0040: 6 + Number * 2 ]; - if ( Outlpt <> 0 ) then - begin - Inlpt := Outlpt + 1; - Getlpt := TRUE; - end - else - Getlpt := FALSE; -end; - -function getfirstlpt:byte; -var i:integer; -begin -i:=1; - while (not(getlpt(i)) or (i>4)) do inc(i); - if (getlpt(i)=false) then i:=0; - getfirstlpt:= i; -end; - -function getb:byte; -begin - getb:=port[inlpt] and $F8 -end; - -procedure putb(what:byte); -begin - port[outlpt]:=what; -end; - -procedure starttimer; -begin - times:=GetTickCount; -end; - -function endtimer:longint; -begin - endtimer:=getTickCount-times; -end; - -function Initlpt( Emetteur : boolean ) : boolean; -begin - errors:=false; - putb($10); - putb($18); - putb($10); - starttimer; - if ( Emetteur ) then - begin - while ( ( GetB <> $00 ) and ( Endtimer <= DIXSEC ) ) do; - end - else - begin - while ( ( GetB <> $00 ) and ( Endtimer <= DIXSEC ) ) do; - PutB( $10 ); - end; - Initlpt := ( Endtimer <= DIXSEC ); -end; - -function sendlpt( Wert : byte ) : boolean; -var Retour : byte; -label fin; -begin -if errors then goto fin; - Starttimer; - PutB( Wert and $0F ); - while ( ( ( GetB and 128 ) = 0 ) and ( Endtimer <= DIXSEC )) do; - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - Retour := ( GetB shr 3 ) and $0F; - Starttimer; - PutB( ( Wert shr 4 ) or $10 ); - while ( ( ( GetB and 128 ) <> 0 ) and ( Endtimer <= DIXSEC ) ) do - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - Retour := Retour or ( ( GetB shl 1 ) and $F0 ); - fin: - sendlpt := ( Wert = Retour ); -end; - -function receivelpt : byte; -var LoNib, - HiNib : byte; -label fin; -begin - if errors then goto fin; - Starttimer; - while ( ( ( GetB and 128 ) = 0 ) and ( Endtimer <= DIXSEC )) do; - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - LoNib := ( GetB shr 3 ) and $0F; - PutB( LoNib ); - Starttimer; - while ( ( ( GetB and 128 ) <> 0 ) and ( Endtimer <= DIXSEC ) ) do; - if ( Endtimer > DIXSEC ) then - begin - errors:=true; - goto fin; - end; - HiNib := ( GetB shl 1 ) and $F0; - PutB( ( HiNib shr 4 ) or $10 ); - fin: - receivelpt := ( LoNib or HiNib ); -end; - -function checksum8(Nombre:word;Dptr : pointer):byte ; -var donnees : ^DBloc ; - i:word; - ch:byte; -begin -ch:=0; -donnees:=dptr; - for i:=1 to Nombre do ch:=ch + Donnees^[ i ]; - checksum8:=ch; - end; - -function SendlptBlock( Token : byte; - Nombre : word; - Dptr : pointer ):boolean; -var header : BHEADER; - ok : boolean; - i : word; - trys : word; - Donnees : ^DBloc; - label fin; -begin - form1.gauge1.visible:=true; - header.Token := Token; - header.Lenb := (Nombre and $FF00) shr 8; - header.Lenh := Nombre and $FF; - header.Checksum:=checksum8(nombre,Dptr); - trys := MAXTRY; - repeat - ok := TRUE; - for i := 0 to 3 do - ok := ok and sendlpt( Header.Champ[ i ] ); - if ( ok ) then - ok := ok and sendlpt( ACK ) - else - ok := ok and sendlpt( NAK ); - if ( not ok ) then - dec( trys ); - until ( ( ok ) or ( trys = 0 ) or (errors)); - if ( (trys = 0) or (errors)) then - begin - goto fin; - SendlptBlock:=false; - end; - if ( Nombre > 0 ) then - begin - Donnees := DPTR; - trys := MAXTRY; - repeat - ok := TRUE; - for i := Nombre downto 1 do - begin - ok := ok and sendlpt( Donnees^[ i ] ); - reste:=trunc(100-i/nombre*100); - form1.gauge1.progress:=reste - end; - if ( ok ) then - ok := ok and sendlpt( ACK ) - else - ok := ok and sendlpt( NAK ); - if ( not ok ) then - dec( trys ); - until ( ( ok ) or ( trys = 0 ) or (errors)); - if ( (trys = 0) or (errors)) then - begin - goto fin; - SendlptBlock:=false; - end; - end; - SendlptBlock:=true; - fin: - form1.gauge1.visible:=false; -end; - -function ReceivelptBlock( var Token : byte; - var Len : word; - Dptr : pointer ):boolean; -var header : BHEADER; - ok : boolean; - i : word; - trys : word; - EscapeStatus : boolean; - ByteBuffer : byte; - Donnees : ^DBloc; - label fin,good; -begin - form1.gauge1.visible:=true; - trys := MAXTRY; - repeat - for i:= 0 to 3 do - Header.Champ[ i ] := receivelpt; - ByteBuffer := receivelpt; - if ( ByteBuffer <> ACK ) then - dec( trys ); - until ( ( trys = 0 ) or ( ByteBuffer = ACK ) or (errors)); - if ( (trys = 0) or (errors)) then - begin - goto fin; - receivelptblock:=false; - end; - Token := Header.Token; - Len := Header.Lenh+(Header.Lenb shl 8); - if ( Len > 0 ) then - begin - Donnees := Dptr; - trys := MAXTRY; - repeat - for i := len downto 1 do - begin - Donnees^[ i ] := receivelpt; - reste:=trunc(100-i/len*100); - form1.gauge1.progress:=reste - end; - ByteBuffer := receivelpt; - if ( ByteBuffer <> ACK ) then - dec( trys ); - until ( ( trys = 0 ) or ( ByteBuffer = ACK ) ); - if ( trys = 0 ) then - begin - goto fin; - receivelptblock:=false; - end; - end; - receivelptblock:=true; - fin: - form1.gauge1.visible:=false; -end; - - -function Sendfile(name:string):boolean; -var lus:word; -Fichier:file; -begin -assign( Fichier, Name ); -reset( Fichier, 1 ); -Blockread( Fichier, Block, 15000, Lus ); -if lus>0 then -Sendfile:=SendlptBlock( 1, Lus, @Block ) -else -Sendfile:=false; -end; - -procedure TForm1.FormActivate(Sender: TObject); -begin -adress:=0; -showadress(sender); -Memo2Click(Sender); -SpeedButton8Click(Sender); -pop:=true; -end; - -procedure TForm1.SpinButton1DownClick(Sender: TObject); -begin -if (adress>0) and okm.checked then -begin -dec(adress); -SpeedButton6Click(Sender); -end; -end; - -procedure TForm1.SpinButton1UpClick(Sender: TObject); -begin -if (adress<65536*16) and okm.checked then -begin -inc(adress); -SpeedButton6Click(Sender); -end; -end; - -function hextoint(hex:string;n:word):longint; -var -resu,exp:longint; -i:word; -begin - hex :=UpperCase(hex); - resu:=0; - exp:=1; - for i:=n downto 1 do - begin - resu:=resu+(Pos(hex[i],'0123456789ABCDEF')-1)*(exp); - exp:=exp*16 - end; - hextoint:=resu; - end ; - - function adresstoint(hex:string):longint; -begin -adresstoint:=hextoint(Copy(hex, 1, 4),4)shl 4 + hextoint(Copy(hex, length(hex)-3, 4),4) -end; - -procedure TForm1.showadress(Sender: TObject); -var i,j,adh,adl:word; -adress2:longint; -old,old2:string; -begin -memo1.clear; -memo2.clear; -memo3.clear; -for i:=0 to 29 do -begin -adress2:=adress+i*16; -adl:=adress2 and $FFFF; -adh:=(adress2 and $F0000) shr 4; -memo1.lines.add(IntToHex(adh,4)+':'+IntToHex(adl,4)) ; -old:=''; -old2:=''; -for j:=1 to 16 do -begin -old:=old+inttohex(block[i*16+j],2); -if block[i*16+j]=0 then -old2:=old2+'.' -else -old2:=old2+char(block[i*16+j]) ; -if j mod 2=0 then old:=old+' '; -end; -memo2.lines.add(old) ; -memo3.lines.add(old2) ; -end -end; - -procedure TForm1.SpeedButton8Click(Sender: TObject); -begin -if getfirstlpt=0 then showmessage('Pas de port parallèle détecté'); -errors:=false; -end; - -procedure TForm1.SpeedButton6Click(Sender: TObject); -var adl,adh,good:word; -tok:byte; -ok:boolean; -begin -if (inlpt=0) then SpeedButton8Click(sender); -if ((inlpt<>0) and (initlpt(true))) then -begin - adl:=adress and $FFFF; - adh:=(adress and $F0000) shr 4; -Block[1]:=lo(adl); -Block[2]:= hi(adl); -Block[3]:= lo(adh); -Block[4]:= hi(adh); -Block[5]:= lo(512); -Block[6]:= hi(512) ; -ok:=false; -if SendlptBlock( 1,6,@Block) then ok:=receivelptBlock(tok,good ,@Block); {demande de RAM} -if not(ok) or errors then Showmessage('Erreur de transmission !!!!!!!!!!'); -showadress(sender); -end -else -Showmessage('Pas de PC distant'); -putb($08); -errors:=false; -end; - -procedure TForm1.MaskEdit1Change(Sender: TObject); -begin -if pop then -begin -adress:=adresstoint(maskedit1.text); -if okm.checked=true then SpeedButton6Click(sender); -showadress(sender); -end; -end; - -procedure TForm1.SpinButton2DownClick(Sender: TObject); -begin - if (adress+16*30<=65536*16) and okm.checked then - begin - adress:=adress+16*30; -SpeedButton6Click(Sender); -end; -end; - -procedure TForm1.SpinButton2UpClick(Sender: TObject); -begin - if (adress-16*30>=0) and okm.checked then - begin - adress:=adress-16*30; -SpeedButton6Click(Sender); -end; -end; -procedure TForm1.SpeedButton3Click(Sender: TObject); -var adl,adh,good:word; -adress2:longint; -tok:byte; -ok:boolean; -begin -if (inlpt=0) then SpeedButton8Click(sender); -if ((inlpt<>0) and (initlpt(true))) then -begin - adress2 :=adresstoint(maskedit1.text); - adl:=adress2 and $FFFF; - adh:=(adress2 and $F0000) shr 4; -Block[1]:=lo(adl); -Block[2]:= hi(adl); -Block[3]:= lo(adh); -Block[4]:= hi(adh); -ok:=SendlptBlock( 7,4,@Block); -if not(ok) or errors then Showmessage('Erreur de transmission !!!!!!!!!!'); -end -else -Showmessage('Pas de PC distant'); -putb($18); -errors:=false; -end; -procedure TForm1.Memo2Click(Sender: TObject); -var ligne,col,pos,adl,adh:word; -adress2:longint; -begin - ligne:=memo2.selstart div 42; - col:= (trunc((memo2.selstart mod 42+1) / 2.5)); - pos:=16*ligne+col; - label1.caption:=inttostr(ligne)+':'+inttostr(col)+':'+inttostr(pos); - adress2:=pos+adress; - adl:=adress2 and $FFFF; - adh:=(adress2 and $F0000) shr 4; - pop:=false; - maskedit1.text:=inttohex(adh,4)+':'+inttohex(adl,4); - pop:=true; -end; - -end. diff --git a/programs/pmode.asm b/programs/pmode.asm deleted file mode 100644 index c7c048b..0000000 --- a/programs/pmode.asm +++ /dev/null @@ -1,22 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,,,offset realstart> - -realstart: - mov eax,cr0 - or al,1 - mov cr0,eax - retf - - diff --git a/programs/souris.asm b/programs/souris.asm deleted file mode 100644 index eca057b..0000000 --- a/programs/souris.asm +++ /dev/null @@ -1,32 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [mouseon] - jc errormouse - call [print],offset message - retf - -errormouse: - call [print],offset errormessage - retf - -message db 'Activation de la souris\l',0 -errormessage db 'impossible d''activer la souris\l',0 - -importing -use VIDEO.LIB,print -use MOUSE.SYS,mouseon -endi diff --git a/programs/test.asm b/programs/test.asm deleted file mode 100644 index d48bc79..0000000 --- a/programs/test.asm +++ /dev/null @@ -1,169 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [savestate] - push 0FFFFh - pushd 652201 - pushd 1545454545 - push 1523 - push 2041 - push offset zero - push offset fixe - push 5 - push 'i' - push 'a' - pushd 5041 - pushd 125645 - pushd 5041 - pushd 125645 - pushd 5041 - pushd 125645 - push offset message - call [print] - xor ax,ax - int 16h - call [clearscreen] - call [xchgpages] - call [clearscreen] - mov cx,200 -go1: - call [xchgpages] - call [waitretrace] - call [print],offset textdemo1 - call put - call [xchgpages] - call [waitretrace] - dec cx - jnz go1 - mov cx,200 -go2: - call [xchgpages] - call [waitretrace] - call [print],offset textdemo2 - call put - call [xchgpages] - call [waitretrace] - dec cx - jnz go2 - mov cx,200 -go3: - call [xchgpages] - call [waitretrace] - call [print],offset textdemo3 - call put - call [xchgpages] - call [waitretrace] - dec cx - jnz go3 - call [xchgpages] - call [clearscreen] - call [print],offset texte2 - call [xchgpages] - call [clearscreen] - call [xchgpages] - mov bp,255 - xor edx,edx -go4: - call [xchgpages] - call [waitretrace] - inc edx - push edx - push offset texte3 - call [print] - call [xchgpages] - call [waitretrace] - dec bp - jnz go4 - push offset texte4 - call [print] - mov ax,0 - int 16h - call [restorestate] - retf -put: - call random - mov di,dx - and di,4096-2 - mov si,offset fond - call showstring2 - ret -random: - push ax - MOV AX,[cs:randseed] - MOV DX,8405h - MUL DX - INC AX - MOV [cs:randseed],AX - pop ax - ret -randseed dw 1234h -Randomize: - push ax cx dx - mov ah,0 - int 1ah - mov [cs:randseed],dx - pop dx cx ax - ret - -zero db 'Chaine a z‚ro terminal',0 -fixe db 20,'Chaine a taille fixe' -message db "\m01\e\c07\h01D‚monstration de la librairie VIDEO.LIB\l\l" - db "\c01Nombres entiers ou sign‚s (%%u/%%i):\l%u\l%iD\l" - db "\c02Nombre hexad‚cimaux (%%h):\l%hD\l%hW\l" - db "\c03Nombres Binaires (%%b):\l%bD\l%bB\l" - db "\c04Caracteres simples ou multiples (%%c/%%cM):\l%c\l%cM\l" - db "\c05Chaines a z‚ro terminal ou fixes (%%0/%%s):\l%s\l%0\l" - db "\c06Dates et heures (%%t/%%d):\l%t\l%d\l" - db "\c07Nombre a echelle automatique (%%z):\l%z\l%z\l" - db "\c08Attributs de fichiers (%%a):\l%a",0 - -fond db 16,'Ceci est un fond' -textdemo1 db '\c05Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling Scrolling\l',0 -textdemo2 db '\c07Vertical Vertical Vertical Vertical Vertical Vertical Vertical Vertical\l',0 -textdemo3 db '\c09Rapide Rapide Rapide Rapide Rapide Rapide Rapide Rapide\l',0 -texte1 db 'Echange rapide de pages Vid‚o',0 -texte2 db '\g04,13Routine d''affichage Ultra Rapide Agissant sur le Mat‚riel' - db '\g04,14Possibilit‚ de r‚aliser des effets de superposition',0 -texte3 db '\c04%bD\l',0 -texte4 db '\g01,00Sauvegarde et restauration de l''ecran (%%s/%%r)',0 - -showstring2: - push es bx cx si di - add di,4000 - mov bx,0B800h - mov es,bx - mov bl,[si] - mov ch,3 -strinaize4: - inc si - mov cl,[si] - mov [es:di],cx - add di,2 - dec bl - jnz strinaize4 - pop di si cx bx es - ret - - -importing -use VIDEO.LIB,print -use VIDEO,xchgpages -use VIDEO,setvideomode -use VIDEO,clearscreen -use VIDEO,savestate -use VIDEO,restorestate -use VIDEO,waitretrace -endi diff --git a/programs/verifier.asm b/programs/verifier.asm deleted file mode 100644 index 93d601e..0000000 --- a/programs/verifier.asm +++ /dev/null @@ -1,106 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: - call [savestate] - call [print],offset msg - mov bp,1000h - xor di,di - xor cx,cx - xor edx,edx -verifall: - mov ah,1 - int 16h - jz nokey - cmp al,' ' - je enend -nokey: - mov dx,di - push edx - mov dx,cx - inc dx - push edx - mov ax,cx - inc ax - mov si,100 - mul si - mov si,2880 - div si - mov dx,ax - push edx - call [print],offset msg2 - call gauge - call [verifysector],cx - jc errors - je noprob - inc di -noprob: - inc cx - cmp cx,2880 - jnz verifall -enend: - cmp di,0 - je noatall - call [print],offset error2 - jmp someof -noatall: - call [print],offset noerror -someof: - mov ah,0 - int 16h - call [restorestate] - retf -errors: - call [print],offset error - mov ah,0 - int 16h - call [restorestate] - retf - -error db '\g10,10Erreur avec le lecteur de disquette !',0 -error2 db '\g10,10Le disque est defectueux, appuyez sur une touche pour quitter',0 -noerror db '\g10,10Pas de secteurs defectueux, appuyez sur une touche pour continuer',0 -msg db '\m02\e\c07\g29,00- Test de surface du disque -\g02,49',0 -msg2 db '\g10,20%u %%\g10,16%u cluster testes. \h34%u cluster defectueux. ',0 - -gauge: - push ax dx - mov ax,cx - mul [sizeof] - div [max] - xor edx,edx - mov dx,[sizeof] - sub dx,ax - push dx - push 'Û' - mov dx,ax - push dx - push 'Û' - push offset gauges - call [print] - pop dx ax - retn - -max dw 2879 -sizeof dw 50 - -gauges db '\g10,18\c05%cM\c07%cM',0 - -importing -use VIDEO.LIB,print -use VIDEO,savestate -use VIDEO,restorestate -use DISQUE,verifysector -endi diff --git a/programs/volume.asm b/programs/volume.asm deleted file mode 100644 index bc9703e..0000000 --- a/programs/volume.asm +++ /dev/null @@ -1,351 +0,0 @@ -model tiny,stdcall -p586N -locals -jumps -codeseg -option procalign:byte - -include "..\include\mem.h" -include "..\include\divers.h" -include "..\include\graphic.h" - -org 0h - -start: -header exe <"CE",1,0,0,,offset imports,,offset realstart> - -realstart: -mov ax,0305h -mov bx,0008h -int 16h -call [savestate] -call [setvideomode],2 -xor ebp,ebp -xor ax,ax -mov fs,ax -call [disablescroll] -adres: -call [saveparamto],offset infos -call [readsector],[sect],offset buffer -jnc adres2 -errtr: - call [setxy],0,[word ptr lastline] - call [print],offset errordisk - xor ax,ax - int 16h -adres2: -call [saveparamto],offset infos -mov al,[infos.lines] -dec al -mov [lastline],al -mov al,[infos.columns] -sub al,16 -mov bl,al -shr al,2 -mov [sizex],al -and bl,11b -mov [sizex2],bl -mov al,[infos.mode] -cmp al,[oldmode] -je noinit -call [clearscreen] -mov [oldmode],al -noinit: -call [setxy],0,0 -mov edi,ebp -mov bh,[lastline] -lines: -xor edx,edx -mov dx,di -push edx -mov edx,edi -mov dx,[sect] -push edx -push offset spaces -call [print] -mov dx,di -mov al,[sizex] -mov esi,edi -doaline: -push [dword ptr di+offset buffer] -push 8 -call [showhex] -call [showchar],' ' -inc edi -dec al -jnz doaline -mov edi,esi -push offset spaces2 -call [print] -mov al,[sizex] -doaline2: -push [word ptr di+offset buffer] -call [showchar] -inc edi -dec al -jnz doaline2 -dec bh -je outes -cmp [sizex2],0 -je lines -call [addline] -jmp lines -outes: -call [setxy],0,[word ptr lastline] -call [print],offset menu - waitkey: - mov ax,0 - int 16h - cmp ax,3B00h - jne suit - cmp bp,8*16 - jae waitkey - add bp,16 - jmp adres2 - suit: - cmp ax,3C00h - jne suit2 - cmp bp,0 - je waitkey - sub bp,16 - jmp adres2 - suit2: - cmp ax,3D00h - jne suit3 - cmp [sect],2880 - ja waitkey - inc [sect] - jmp adres - suit3: - cmp ax,3E00h - jne suit4 - cmp [sect],0 - je waitkey - dec [sect] - jmp adres - suit4: - cmp ax,3F00h - jne suit5 - jmp adres2 - suit5: - cmp ax,4000h - jne suit6 -call [writesector],[sect],offset buffer - jnc waitkey - jmp errtr - suit6: -cmp ax,4100h -jne suit7 -mov [dword ptr pope],'TIDE' -call [setxy],0,[word ptr lastline] -call [print],offset menu -mov ax,0B800h -mov es,ax -mov [xxyy2],3 -mov [xxyy],3 -call calc1 -call calc2 -waitst: -mov ax,0 -int 16h -cmp ah,41h -jne tre -mov [dword ptr pope],' EUV' -push cs -pop es -call [writesector],[sect],offset buffer - jnc waitkey - jmp errtr -tre: -cmp al,0 -jne write -cmp ah,48h -jne tre1 -cmp [yy],0 -je waitst -dec [yy] -jmp cursor -tre1: -cmp ah,50h -jne tre2 -mov al,[lastline] -dec al -xor ah,ah -cmp [yy],ax -je waitst -inc [yy] -jmp cursor -tre2: -cmp ah,4Dh -jne tre4 -cmp [xx],15 -je waitst -inc [xx] -jmp cursor -tre4: -cmp ah,4Bh -jne waitst -cmp [xx],0 -je waitst -dec [xx] -jmp cursor -write: -call asciihex2dec -cmp cl,15 -ja waitst -call calc1 -call calc2 -mov edi,[es:bx-1] -mov dx,[es:si-1] -mov [byte ptr es:bx],0112 -mov [es:bx-1],al -writs: - mov ax,0 - int 16h - mov ch,cl - call asciihex2dec - cmp cl,15 - ja writs - shl ch,4 - add ch,cl - mov [es:bx+1],al - mov [es:si-1],ch - mov ax,bx - call calc3 - mov [bx],ch - inc [xx] - cmp [xx],16 - jne pasde - inc [yy] - mov [xx],0h - pasde: - call calc1 - call calc2 - jmp waitst -cursor: -call calc1 -call calc2 -jmp waitst -suit7: -cmp ax,4200h -jne adres -call [restorestate] -retf -calc1: -push ax dx si -mov ax,[xx] -mov dx,[xx] -shl ax,2 -shl dx,1 -add ax,dx -add ax,27 -mov bx,[yy] -mov dx,[yy] -shl bx,5 -shl dx,7 -add bx,dx -add bx,ax -mov [byte ptr es:bx],112 -mov [byte ptr es:bx+2],112 -mov si,[xxyy] -mov [byte ptr es:si],07 -mov [byte ptr es:si+2],07 -mov [xxyy],bx -pop si dx ax -ret -calc2: -push ax bx dx -mov si,[yy] -mov dx,[yy] -shl si,5 -shl dx,7 -add si,dx -mov dx,[xx] -shl dx,1 -add si,dx -add si,129 -mov [byte ptr es:si],112 -mov bx,[xxyy2] -mov [byte ptr es:bx],07 -mov [xxyy2],si -pop dx bx ax -ret -calc3: - push dx - xor bx,bx - mov bx,[xx] - mov dx,[yy] - shl dx,4 - add bx,dx - add bx,bp - add bx,offset buffer - pop dx - ret - -asciihex2dec: -cmp al,'a' -jb nomin -cmp al,'f' -ja nomin -sub al,'a'-'A' -jmp ismaj -nomin: -cmp al,'A' -jb nomaj -cmp al,'F' -ja nomaj -ismaj: -mov cl,al -sub cl,'A'-10 -jmp endt -nomaj: -mov cl,al -sub cl,'0' -endt: -ret - -xx dw 0 -yy dw 0 -xxyy dw 3 -xxyy2 dw 3 - -lastline db 0 -sizex db 0 -sizex2 db 0 -buffer db 2048 dup (0) - -dep db ':',0 -errordisk db '\c74Une erreur est apparue sur le lecteur, appuyez sur une touche ',0 -menu db '\c70Haut&Bas [F1/2] Secteur [F3/4] Charger/Sauver [F5/6] Mode [F7] Quit. [F8] ' -pope db 'VUE ',0 -spaces db '\c02%hW:%hW \c04| \c07',0 -spaces2 db '\c04 | \c07',0 - -showbuffer db 35 dup (0FFh) -oldmode db 0 -sect dw 0 -infos vgainf <> - -importing -use DISQUE,readsector -use DISQUE,writesector -use VIDEO,setvideomode -use VIDEO,savestate -use VIDEO,restorestate -use VIDEO,setxy -use VIDEO,addline -use VIDEO,saveparamto -use VIDEO,disablescroll -use VIDEO,clearscreen -use VIDEO.LIB,print -use VIDEO.LIB,showhex -use VIDEO.LIB,showchar -endi - - - - - - - -